你不知道的C++(1)-- operator NEW

c++中的new操作符?多简单啊!但是你是否用过<new>标准库里面的这三个操作符呢?

第一个操作符分配size个字节的对齐存储空间,来代表size大小的对象,并返回指向该空间第一个字节的一个非空指针。如果分配失败,它将抛出一个bad_alloc异常

第二个操作符是nothrow的。它完成和第一个版本一样的操作,只是在失败的时候仅仅返回一个空指针而不抛出异常

第三个操作估计用过的人不多,它被叫做“placement”版本,它并不分配内存。仅仅简单的返回ptr。尽管如此对象的构造函数(如果有的话)依旧会被调用

我们来看一段例子代码

 

那么这些操作有什么用呢?

  • 对于第二版本的函数,可以用来快速创建大量对象,减少初始化的时间,让对象只在需要的时候进行初始化
  • 对于第三版本的函数,除了用来配合第二版本的函数,还可以用来完成完成“构造函数调用构造函数”的任务

举个例子:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值