引子:
写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会调用构造函数,但同样需要自己显式析构。