valgrind检查still reachable情况
Posted cloudwind2011
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了valgrind检查still reachable情况相关的知识,希望对你有一定的参考价值。
valgrind --leak-check=yes检查bufr编解码程序运行时提示still reachable: 568 bytes in 1 blocks,如下图示:
于是怀疑有内存泄漏,难道是malloc或calloc后没有free?但这样仍看不出哪里代码出了问题,于是开启valgrind的选项--show-reachable=yes再运行一遍,如下图示:
从上图可以看出问题代码所在,原来是忘了关闭日志文件了!果断添加了close_log_file()在程序最后关闭日志文件,再检测一遍,程序正常。如下图示:
总结:(1)提示没有free或still reachable的,不仅需要考虑mallc、calloc没有free的问题,还需考虑文件打开没有关闭的问题。
(2)开启valgrind的选项--show-reachable=yes能显示导致still reachable问题的代码,否则不显示。
以上是关于valgrind检查still reachable情况的主要内容,如果未能解决你的问题,请参考以下文章
Valgrind 不能在 MacOS Mojave 上运行?与康达一起安装