地心探索 · 内存分配控制
#include <iostream>
#include <new>
class Widget
{
public:
int value;
Widget(int v) : value(v) { std::cout << "Constructed: " << value << std::endl; }
~Widget() { std::cout << "Destructed: " << value << std::endl; }
};
int main()
{
// 这两种写法是等价的:
Widget* w1 = new Widget(42);
// 等价于:
void* memory = operator new(sizeof(Widget)); // 分配内存
Widget* w2 = new (memory) Widget(42); // 原位构造
// 销毁时
delete w1;
// 等价于:
w2->~Widget(); // 调用析构函数
operator delete(memory); // 释放内存
return 0;
}技术
用途
Last updated