new总结

引子:

写C的人有个好习惯,就是if(malloc(sizeof(int)) == NULL) 申请完之后会检查一下,那么c++里你或许也会

自然而然的有个好习惯if(new XXX == NULL) ,但这样无补于事,因为这个new并不等效于malloc,这里

如果失败了就抛出badalloc,后面的检查不会被执行。

new operator

c++里面普遍用的,一直用的new,就是new operator。

operator new

这个就像C中的malloc,不负责初始化对象,需要自己初始化。对应的,operator delete也不负责析构,需要自己显式析构

placement new

placement new的定义与operator new声明之间的区别:placement new的定义多一个void*参数。代表从哪个buffer中分配内存,注意是分配内存,不是申请内存,被分配的内存是

事先申请好的。这个new会调用构造函数,但同样需要自己显式析构。

原文地址:https://www.cnblogs.com/encode/p/4523757.html