Memcheck - 内存泄漏的未知源模块

时间:2015-09-23 08:24:58

标签: c++ memory-leaks valgrind memcheck

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

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

有时虽然源模块列为unknown line:0,但在我的情况下,对new的调用。如果memcheck知道已经对new进行了调用,那么它怎么能告诉它来自哪里呢?我只是试图了解这一点,以便我可以知道这些泄漏可能来自哪里。

1 个答案:

答案 0 :(得分:0)

我认为它无法正确解析堆栈跟踪。当他们尝试在快速模式下解决堆栈跟踪(例如,在x86上读取EBP / ESP)和错过帧指针,或者当他们尝试使用调试信息解析堆栈跟踪时,会发生这样的工具(VLD,Deleaker等)信息不正确或缺席。

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