new delete全解析
来源:互联网 发布:带海拔的指南针软件 编辑:程序博客网 时间:2024/04/27 06:51
1. new operator (new操作符)
1) 分配空间 调用operator new
2) 调用构造函数
Sample:
string * ps = new string("Memory");
2. operator new
完全申明
void* operator new(size_t size);
只负责分配内存,不知道有构造函数存在
void* ps = operator new(sizeof(string));
void* memory = operator new(sizeof(string));
call string::string("Memory"); // dev不允许直接调用构造函数
string* ps = static_cast<string*>(memory);
3. placement new
在一个已经分配完毕的空间中构造对象
void* operator new(size_t , void* location)
{
return location;
}
Widget * constructWidgetInBuffer(void *buffer, int widgetSize)
{
return new (buffer) Widget(widgetSize);
}
1)如果想在堆上建立一个对象,应该用new操作符。它既分配内存又为对象调用构造函数。
2)如果仅仅想分配内存,就应该调用operator new函数;它不会调用构造函数。
3)如果你想定制自己的在堆对象被建立时的内存分配过程,你应该写你自己的operator new函数,然后使用new操作符,new操作符会调用你定制的operator new.
4)如果你想在一块已经获得指针的内存里建立一个对象,应该用placement new.
4. delete operation
1)调用析构函数
2)调用operator delete释放内存
得delete ps;
5. operator delete
完全申明
void operator delete(void* memToBeDeallocated);
new 和 delete应该对应
operator new和operator delete应该对应
placement new和 调用析构函数应该对应 (不应该释放内存)
6. new[]
string* ps = new string[10];
1)operator new[]被调用,分配数组需要的空间
2)每个string对象的默认构造函数被调用
7. delete []
delete [] ps;
1)调用每个string 对象的析构函数
2)释放整个数组的空间
new[] 和delete[]必须对应
- new delete全解析
- new delete 解析
- new和delete解析
- new delete 关键字深度解析
- new与delete原理解析
- 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](上)
- 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](下)
- 深入C++ new/delete,malloc/free解析
- 示例解析 C++ 的 new / delete 和 new [] / delete [] 之用法
- new/delete
- new delete
- new & delete
- new delete
- new/delete
- new & delete
- new delete
- new delete
- new/delete
- (spring+hibernate)java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava
- Related to Oracle SQL 关于选择前N行数据的SQL语句
- 对一个Java FrameWork的分析(一)
- ext炫酷界面
- oracle 高级SQL查询笔记12-01
- new delete全解析
- jfreechar画柱状图
- 关于asp程序优化,变量赋值
- 用Visio做工作流程图
- 有序表的折半查找 三
- 标准C++库string及STL相关函数
- 关于序列化的问题!!!哪位大侠帮帮忙???
- 猥琐的发了一个贴
- 转帖-----我的WinCE5.0入门全过程,为了方便后来者,写了一天多,仅供大家参考!(开发环境建立+流驱动开发+相关资料)