new
C++语言内置的运算符,分配指定对象类型的内存空间,再调用构造函数。
::operator new
new的重载运算符,就是分配一片原始的内存空间,调用者要指定内存大小。从功能上等同于C的malloc()?(我不完全确定)
placement new
把某个对象放到已经存在的内存空间中。
下面看实际例子
struct Hello { Hello() { } ~Hello() { } private: int a; }; int main(int argc, char* argv[]) { Hello* hello = new Hello; delete hello; void* ptr = ::operator new(sizeof(Hello)); // oprator new ::new (ptr) Hello; // placement new Hello* helloPtr = (Hello*)ptr; helloPtr->~Hello(); // invoke Hello::~Hello() delete ptr; return 0; }
原文链接: https://www.cnblogs.com/herm/archive/2012/03/12/2773909.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/43971
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!