new operator和delete operator

  1. C++语句:string *pStr = new String;
  2. 由编译器产生的new operator的近似代码:
  3. {
  4.     void *memory = operator new(sizeof(string));
  5.     // 然后在memory所代码的内存块上调用string类相应的构造函数
  6.     // 这里要注意的是:所谓的构造函数是由编译器自动调用的,程序
  7.     // 员并没有直接调用构造函数的权利
  8.     string *ps = static_cast<string*> (memory);
  9. }
  10. C++规定new operator所执行的内容不容许更改,即不允许对该操作符进行重载,
  11. 只允许程序员对operator new操作符进行重载和编写自己的构造函数来间接影响
  12. new operator具体行为的方式.
  13. operator new的功能类似与C语言中的malloc函数,都只用于分配未经初始化的内存,
  14. 其相应的内存释放函数由operator delete提供,而所谓的placment new只不过是
  15. operator new的一个重载操作符而已,并仅仅只是直接返回传递进行的已分配好的内
  16. 存指针,由对应的placement delete对其转送的内存进行释放.
  17. 总之new operator的具体执行内容为:
  18. 1.分配内存
  19. 2.在该内存上调用相应的构造函数以初始化该内存
  20. 3.对指针进行转型并返回
  21. delete operator的具体执行内容为
  22. 1.调用相应的析构函数
  23. 2.释放内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值