c++ new 的几个用法

  1. 在 c++ 里 new 有三个用法。1) new xxx, 2) operator new( int size ), 3) placement new.

  2. 最常用的是 new xxx 例如 pstr = new string(“xxx”); 这种会调用 string 的构造函数,并需要通过 delete pstr 来析构。

    void* w = operator new(100);
    operator delete(w);
  1. void* operator new( size_t size ) 这是一个函数和 malloc 一样。需要调用 operator delete( void* ) 作用与 free() 一样来释放内存。
  2. placement new 语法 
    char *p = new char[100];
    char *q = NULL;
    new (q) int;
    delete []p;

placement new 的主要用途就是可以反复使用一块已申请成功的内存空间。这样可以避免申请失败的徒劳,又可以避免使用后的释放。 placement new 还会调用构造函数,但是因为此内存不是你在 new 的时候分配的那么就不应该 delete q 。
注意:它的内存释放应该是 delete []p,而不是 delete q。q 只是使用了了这块内存而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值