c++中的new操作符?多简单啊!但是你是否用过<new>标准库里面的这三个操作符呢?
第一个操作符分配size个字节的对齐存储空间,来代表size大小的对象,并返回指向该空间第一个字节的一个非空指针。如果分配失败,它将抛出一个bad_alloc异常
第二个操作符是nothrow的。它完成和第一个版本一样的操作,只是在失败的时候仅仅返回一个空指针而不抛出异常
第三个操作估计用过的人不多,它被叫做“placement”版本,它并不分配内存。仅仅简单的返回ptr。尽管如此对象的构造函数(如果有的话)依旧会被调用
我们来看一段例子代码
那么这些操作有什么用呢?
- 对于第二版本的函数,可以用来快速创建大量对象,减少初始化的时间,让对象只在需要的时候进行初始化
- 对于第三版本的函数,除了用来配合第二版本的函数,还可以用来完成完成“构造函数调用构造函数”的任务
举个例子: