0

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

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

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

4

1 回答 1

0

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

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

于 2015-09-23T08:51:43.573 回答