正如本网站所引用的...
http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10
但是我没有找到原因,为什么我们要明确调用desturctor?
最佳答案
您可以将其视为对 delete 的调用,但由于您使用了 Placement new,您不想使用 delete,因为这会尝试释放内存。如果你想自动调用它,你可以使用 RAII :
// Could use a templated version, or find an existing impl somewhere:
void destroy_fred(Fred* f) {
f->~Fred();
}
void someCode()
{
char memory[sizeof(Fred)];
void* p = memory;
boost::shared_ptr<Fred> f(new(p) Fred(), destroy_fred);
// ...
// No need for an explicit destructor, cleaned up even during an exception
}
关于c++ - 为什么析构函数没有在新的放置中隐式调用”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1022320/