如何正确清除内存?

时间:2015-04-21 20:52:08

标签: c++ c++11 memory

我有一些代码:

MemoryManager mm;
char *a = new (mm) char [len +1];

如何通过指针a释放所有内存?

1 个答案:

答案 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'