我开始使用C ++并使用memcheck检查程序是否存在内存泄漏。
如果(当......)存在泄漏,我会得到Unfreed memory allocations remaining
输出,其中new
,malloc
等的使用尚未被释放。这些通常伴随着源文件和分配的行号,这使得它易于修复。
有时虽然源模块列为unknown line:0
,但在我的情况下,对new
的调用。如果memcheck知道已经对new
进行了调用,那么它怎么能告诉它来自哪里呢?我只是试图了解这一点,以便我可以知道这些泄漏可能来自哪里。
答案 0 :(得分:0)
我认为它无法正确解析堆栈跟踪。当他们尝试在快速模式下解决堆栈跟踪(例如,在x86上读取EBP / ESP)和错过帧指针,或者当他们尝试使用调试信息解析堆栈跟踪时,会发生这样的工具(VLD,Deleaker等)信息不正确或缺席。
在大多数情况下,可以正确解析堆栈跟踪。有时 - 不是。