Valgrind总结:输出中是否存在内存泄漏?

时间:2015-08-04 18:03:31

标签: c++ memory-leaks valgrind

我的程序是用C ++编写的,我运行valgrind来检查内存问题。但是,我不太确定,当你有更多分配的内存而不是释放时会发生什么,但总结说没有泄漏。 以下是以下命令的输出:

valgrind --leak-check=full  ./myprogram

输出(Centos 6):

==28196== 
==28196== HEAP SUMMARY:
==28196==     in use at exit: 66,748 bytes in 1 blocks
==28196==   total heap usage: 7 allocs, 6 frees, 67,964 bytes allocated
==28196== 
==28196== LEAK SUMMARY:
==28196==    definitely lost: 0 bytes in 0 blocks
==28196==    indirectly lost: 0 bytes in 0 blocks
==28196==      possibly lost: 0 bytes in 0 blocks
==28196==    still reachable: 66,748 bytes in 1 blocks
==28196==         suppressed: 0 bytes in 0 blocks
==28196== Reachable blocks (those to which a pointer was found) are not shown.
==28196== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==28196== 
==28196== For counts of detected and suppressed errors, rerun with: -v
==28196== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
Profiling timer expired

有人可以详细说明抑制问题吗?

谢谢

1 个答案:

答案 0 :(得分:2)

仍然可以访问意味着您有指向内存的指针,但在关闭之前您没有释放它。在大多数情况下,这意味着没有问题的内存泄漏,因为大部分时间这是您填写的数据结构,但在关闭之前没有释放。

这个问题 Still Reachable Leak detected by Valgrind在最佳答案中有更多解释。

编辑:为了详细说明抑制,valgrind可以读取文件以抑制某些错误,并且此注释从2中被抑制为2意味着还会发现抑制错误列表中的2个错误。错误通常会被抑制,因为它们位于第三方库中或者已知不会导致问题。有关抑制错误的详细信息,请查看valgrind's explanation of error suppression