【问题标题】:How do I verify that all memory allocations have been freed between two checkpoints?如何验证两个检查点之间是否已释放所有内存分配?
【发布时间】:2019-02-09 20:40:00
【问题描述】:

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

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

【问题讨论】:

    标签: linux memory-leaks valgrind


    【解决方案1】:

    几年前我为此写了article

    简而言之,您包含 valgrind.h,然后您可以使用宏,如

    VALGRIND_DO_LEAK_CHECK

    您也可以附加 gdb 并发出“monitor leak_check”命令。这可以是增量的。见here

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 2010-10-09
      • 1970-01-01
      • 2016-11-01
      • 2010-12-07
      • 2022-08-16
      • 2010-12-12
      • 2018-08-27
      • 1970-01-01
      相关资源
      最近更新 更多