深度剖析new/delete

malloc/free和new/delete比较

malloc/free和new/delete的区别和联系?
它们都是动态管理内存的入口

malloc/free是C/C++标准库的函数,new/delete是C++操作符

malloc/free只是动态分配内存空间/释放空间。而new/delete除了 分配空间还会调用构造函数和析构函数进行初始化与清理(清理成员)

malloc/free需要手动计算类型大小且返回值会void*,new/delete 可自己计算类型的大小,返回对应类型的指针

new操作符/操作符new/定位new表达式

1. new操作符  new delete 操作符是C++用来动态申请内存的关键字
2. 操作符new  操作符new是一个函数:  

void * operator new (size_t size);  

void operator delete (size_t size)

 void * operator new  

void operator delete[] (size_t size) 

定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象  

new (place_address) type  new (place_address) type(initializer-list)  place_address必须是一个指针,initializer-list是类型的初始化列表  定位new表达式实际调用:
 

void * operator new (size_t size,void* where) 
{     return where; } 


 

猜你喜欢

转载自blog.csdn.net/sing_Hwang/article/details/83795133