如何验证两个检查点之间是否已释放所有内存分配?

时间:2018-09-04 19:10:57

标签: linux memory-leaks valgrind

我的进程似乎正在泄漏内存。进程运行的时间越长,使用的内存就越大。尽管事实是该过程主要由一个循环迭代组成,该循环迭代调用一个函数,该函数不应在调用之间保留任何数据。当我使用valgrind检查泄漏时,一切正常。当进程在运行了几个小时后最终退出时,在退出时会有相当大的延迟,这使我都认为内存是在该函数中分配的,不会立即释放,因为它仍在被引用。然后在退出时释放内存,因为该引用最终被释放。

我想知道valgrind(或其他兼容Linux的工具)是否有办法在两个代码检查点之间进行泄漏检查。我想获取所有已分配但未在两个代码检查点之间释放的所有内存的泄漏报告。

1 个答案:

答案 0 :(得分:0)

几年前,我为此写了article

简而言之,您包括valgrind.h,然后可以使用类似的宏

VALGRIND_DO_LEAK_CHECK

或者,您可以附加gdb并发出“显示器泄漏检查”命令。这可以是增量的。参见here