我的程序是用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
有人可以详细说明抑制问题吗?
谢谢
答案 0 :(得分:2)
仍然可以访问意味着您有指向内存的指针,但在关闭之前您没有释放它。在大多数情况下,这意味着没有问题的内存泄漏,因为大部分时间这是您填写的数据结构,但在关闭之前没有释放。
这个问题 Still Reachable Leak detected by Valgrind在最佳答案中有更多解释。
编辑:为了详细说明抑制,valgrind可以读取文件以抑制某些错误,并且此注释从2中被抑制为2意味着还会发现抑制错误列表中的2个错误。错误通常会被抑制,因为它们位于第三方库中或者已知不会导致问题。有关抑制错误的详细信息,请查看valgrind's explanation of error suppression。