ToB企服应用市场:ToB评测及商务社交产业平台
标题:
new、::operator new与placement new的区别
[打印本页]
作者:
知者何南
时间:
2023-10-10 22:31
标题:
new、::operator new与placement new的区别
在内存管理中,:
perator new()/:
perator delete() 、delete/new、 placement new 是不同的:
:
perator new()
:只是进行空间的申请而不调用构造函数,可以理解为只是对 malloc 的简单封装,返回 void* 。可以进行类内重载或者全局重载,类内没有重载则寻找全局new。
:
perator delete()
:类似,只是对空间进行释放,而不调用析构函数,可以理解为是对 free 的简单封装。可以类内重载或者全局重载,类内没有重载则寻找全局delete。
new
:分为三个步骤:
调用 :
perator new(sizeof(type)) 申请空间(首先查找类内的 :
perator new() )
调用 type->constructor 对申请的对象进行构造
返回对应的指针类型 type*
delete
:同new,分为三个步骤:
调用对应的 type->destroy 进行析构(首先查找类内的 :
perator new() )
调用 :
perator delete(type*) 进行空间释放
return
[code]//类内重载new、delete#includeclass test {public: void* operator new(size_t n) { std::cout
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4