定位new 及其重载
Posted zhiminzeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定位new 及其重载相关的知识,希望对你有一定的参考价值。
//定位new placement new //功能:在已分配好的原始内存中初始化一个对象 //所做的事情: //(1)内存已经分配,定位new并不分配内存,需要提前将这个定位new要是用的内存分配出来 //(2)初始化一个对象(的内存),也可以说是调用这个对象的构造函数 //格式: //new (地址) 类类型(); class A { A(){} ~A(){} }; void* pvoid = (void*)new char[sizeof(A)]; // 先分配出内存 A* pa = new (pvoid) A(); // 调用无参构造函数,这里不会额外分配内存 // 相当于覆盖了原来的那块内存 //释放内存 delete pa; // 传统方式也行 pa->~A(); // 析构函数可以手动调用,构造函数不能手动调用 delete[](void*) pa; // 手动释放,更灵活 // 定位new 的重载 // 定位new没有对应的定位delete void* operator new(size_t size, void* pvoid) { return pvoid; // 将收到的地址返回回去 }
以上是关于定位new 及其重载的主要内容,如果未能解决你的问题,请参考以下文章