当你使用placement-new是一个常见的原因(唯一的原因?):
struct foo {};
void* memoryLocation = ::operator new(sizeof(foo));
foo* f = new (memoryLocation) foo(); // note: not safe, doesn't handle exceptions
// ...
f->~foo();
::operator delete(memoryLocation);
Run Code Online (Sandbox Code Playgroud)
这主要分别存在于分配器(由容器使用),construct和destroy函数中.
否则,不要.堆栈分配将自动完成,就像delete指针一样.(使用智能指针!)
好吧,我想这又有一个原因:当你想要未定义的行为时.然后随意多次调用它... :)