条款8中placement new练习
来源:互联网 发布:网络唱歌比赛 编辑:程序博客网 时间:2024/04/30 10:16
Placement new见ME,p39.
有时有一些分配好的内存,你需要在上面构造对象。有一个特殊版本的operator new,称为placement new。
练习:
#include<iostream>using namespace std;class Base{ public: Base(){cout<<"base"<<endl;} ~Base(){cout<<"~base"<<endl;}};int main(){ void* rawMemory = operator new(sizeof(Base));//只分配内存,不调用构造函数。而且operator new返回的是void*型 Base* pbn=new (rawMemory)Base();//placement New.在已经分配好的内存上构造对象。 cout<<rawMemory<<" "<<pbn<<endl; delete pbn; // pbn->~Base(); // operator delete(pbn); getchar(); return 0;}
delete pbn = pbn->~Base() + operator delete(pbn)。
如果rawMemory不是用operator new来分配的,后面就不能调用delete pbn。因为delete operator会调用operator delete()。而operator delete()只能释放operator new()分配的内存。
结果:
相关:
ME,p39.
条款8:了解不各种不同意义的new和delete 练习
- 条款8中placement new练习
- 条款52:写了placement new也要写placement delete
- 条款52:写了placement new也要写placement delete
- 条款52:写了placement new也要写placement delete
- 条款52:写了placement new 也要写Placement delete
- C++中placement new
- 条款52:写了placement new也要写placement delete(Write placement delete if you write placement new.)
- Effective C++ 3e----new & delete(八)条款2:写了placement new也要写placement delete
- C++中placement new详解
- C++中使用placement new
- effective C++ 条款 52:写了placement new也要写placement delete
- Effective C++:条款52 写了placement new也要写placement delete
- Effective C++ 条款 52:写了placement new也要写placement delete
- 《Effective C++》:条款52:写了placement new也要写placement delete
- 【Effective C++】读书笔记 条款52:写了placement new 也要写placement delete
- placement new
- placement new
- placement new
- JN系列(3):如何得到JavaVM,JNIEnv接口
- 输入二十个整数来求值
- 通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
- 1000以内所有偶数的和(解法一)
- 随机过程考试经验
- 条款8中placement new练习
- WNetAddConnection2 映射网络驱动器
- js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
- JAVA时间格式化处理
- PowerShell base operate about document
- GPL协议
- Linux下的多线程编程
- 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
- Notification使用详解之二:可更新进度的通知