如何正确清除内存?

How to clear the memory correctly?

我有一些代码:

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

请参阅 isocpp 常见问题解答中的 'is there a placement delete'