我有一些代码:
MemoryManager mm;
char *a = new (mm) char [len +1];
如何通过指针a释放所有内存?
答案 0 :(得分:3)
首先,内置的任何内容都无法知道如何删除您的a
数据 - 您是使用新位置分配数据的人,所以这是您的工作清理它。
不幸的是,似乎没有一种方法可以为此重载delete
。只需使用您选择的方法名称:
MemoryManager mm;
char *a = new (mm) char [len +1];
mm.cleanup(a); // since mm allocated us the memory, only it knows how to destroy it.
// Note that this also needs to do obj.~ClassName() for class types
请参阅isocpp常见问题中的'is there a placement delete'。