如何正确清除内存
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 常见问题解答中的"是否有放置删除"。
相关文章:
- 如何使用内存集清除字符数组
- 清除在 main() 中分配的堆栈内存?
- 清除按矢量分配的内存
- 如果操作系统未清除内存泄漏,则在程序完成后内存泄漏是否仍然存在?
- C++ 清除动态阵列中的内存 - 内存无法清除
- 如何在C ++中清除已删除对象的内存?
- thread_local std::list 是否会在呼叫清除时放弃分配的内存
- 如何使用删除 [] 运算符清除动态分配的内存?(无法使用常规删除语法清除)
- 如何正确清除内存
- delete命令会清除用new分配的内存吗
- 与对象一起返回时清除了内存指针
- 有效清除矢量内存
- 为什么运算符 new 清除的内存多于请求的内存
- Do 函数在退出范围时清除动态内存
- 如何从内存中清除C++中的矢量
- 我使用三种内存清除变体.他们都安全吗?我可以得到内存泄漏吗?
- 在函数中返回向量后清除内存
- 引发异常时如何清除动态内存
- OpenCv内存清除以供重用
- 应用程序突然关闭时的堆内存清除