我从C++开始,使用memcheck检查我的程序是否有内存泄漏。
如果(当...)有泄漏,我得到了Unfreed memory allocations remaining输出,使用new,malloc等还没有释放。它们通常伴随着源文件和分配的行号,这使得修复起来很容易。
在我的例子中,对于new的调用,源模块有时会被列为unknown line:0。如果memcheck知道已经调用了new,它怎么会不知道这是从哪里来的呢?我只是想弄清楚这件事,这样我就能知道这些泄密可能来自哪里。
发布于 2015-09-23 16:51:44
我想它只是不能正确解析堆栈跟踪。它发生在这样的工具(VLD、Deleaker等)上。当它们试图在快速模式下解析堆栈跟踪(例如,在x86上读取EBP/ESP )并且帧指针未命中时,或者当它们试图使用调试信息解析堆栈跟踪时,这些信息是不正确的或根本不存在。
在大多数情况下,堆栈跟踪都可以正确解析。有时候--不是。
https://stackoverflow.com/questions/32734482
复制相似问题