深度剖析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; } 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值