代码改变世界

new总结

2015-05-23 10:19  放作夥  阅读(171)  评论(0编辑  收藏  举报

引子:

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