在c ++程序中删除不会释放内存

时间:2013-01-27 06:42:47

标签: c++ memory-management memory-leaks valgrind delete-operator

我创建了一个具有很少整数变量的对象,并且一个char内存块表示分配了300-500字节的内存作为其成员。之后,这个对象被一个线程推入向量,然后另一个并行运行的线程将与一个空向量交换并开始处理包含该对象的向量,处理后我用来删除对象中使用的char块也完成了对象并删除了对象。但似乎记忆没有释放。我用valgrind工具运行这段代码,它没有显示任何泄漏。请帮我解决问题

1 个答案:

答案 0 :(得分:3)

  

但似乎记忆没有释放。

你是如何确切地确定的?我认为不正确。调用delete whatever标记该内存已解除分配且可供将来使用。该语言并未具体说明其含义。您的操作系统比您更好地管理内存。例如,它不会被强制确保您用来测量内存使用量的任何工具(任务管理器?)现在看到X更多的空闲字节。

您正在使用的内存现在可以再次分配。这就是你需要关心的问题,让操作系统的内存管理员担心细节。