c++ - 如何正确清除内存?

标签 c++ c++11 memory

我有一些代码:

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/

相关文章:

c++11 - 实体组件系统的设计

c# - 我是否需要处理未实际使用的资源?

c++ - 尝试使用 Boost 序列化库时出错

c++ - move_iterator 对于返回纯右值的迭代器被破坏并返回悬空引用

c++ - map 中的 map Map.Clear() 错误

c++ - 模板类的自动内存池功能

debugging - 如何可视化 AVR 程序的内存 (SRAM) 使用情况?

java - Java中的已用和空闲内存

c++ - 如何在 Swift 中初始化 myStruct 类型的 3D 数组?

c++ - 从应仅包含数字的 .csv 文件中删除字符