如何正确清除内存

How to clear the memory correctly?

本文关键字:内存 清除 何正确      更新时间:2023-10-16

我有一些代码:

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 常见问题解答中的"是否有放置删除"。