【问题标题】:Memcheck - unknown source module for memory leakMemcheck - 内存泄漏的未知源模块
【发布时间】:2015-09-23 08:24:58
【问题描述】:

我开始使用 C++ 并使用 memcheck 检查我的程序是否存在内存泄漏。

如果(当...)有泄漏,我会得到Unfreed memory allocations remaining 输出,其中new、malloc 等的使用尚未被释放。这些通常伴随着分配的源文件和行号,这样很容易修复。

有时虽然源模块被列为unknown line:0,在我的情况下调用new。如果 memcheck 知道已经拨打了new,它怎么不知道这是从哪里来的?我只是想弄清楚这个问题,以便了解这些泄漏可能来自哪里。

【问题讨论】:

    标签: c++ memory-leaks valgrind memcheck


    【解决方案1】:

    我想它只是无法正确解析堆栈跟踪。当此类工具(VLD、Deleaker 等)尝试在快速模式下解析堆栈跟踪(例如在 x86 上读取 EBP/ESP)并丢失帧指针时,或者当他们尝试使用调试信息解析堆栈跟踪时,就会发生这种情况信息不正确或不存在。

    在大多数情况下,可以正确解析堆栈跟踪。有时 - 不是。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      相关资源
      最近更新 更多