我有一些代码:
MemoryManager mm;
char *a = new (mm) char [len +1];
如何通过指针a释放所有内存?
最佳答案
首先,任何内置程序都不可能知道如何删除您的 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
参见'is there a placement delete'在 isocpp 常见问题解答中。
关于c++ - 如何正确清除内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782895/