【发布时间】:2013-05-19 12:18:42
【问题描述】:
如果我这样做
struct MyStruct { ~MyStruct() { } };
void *buffer = operator new(1024);
MyStruct *p = new(buffer) MyStruct();
// ...
delete p; // <---------- is this okay?
delete 是否保证会照顾 both 调用 ~MyStruct() 以及 operator delete?
【问题讨论】:
-
您分配和构造对象的方式与一步完成的方式之间的结果内存表示是否存在差异?如果是,那么删除可能会失败。如果否,则删除可能会成功。所以问题归结为标准如何指定
new的操作,而不是delete。 -
我用 gcc+Valgrind 对此进行了测试,没有报告任何错误。
标签: c++ new-operator delete-operator placement-new