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 上运行?与康达一起安装

nginx:[错误] 未能初始化 Lua 虚拟机

使用 Reachability 2.2 检查 Internet 连接

valgrind 代码检查,内存泄漏

Valgrind:禁用条件跳转(或整个库)检查

valgrind - 检查程序中的内存泄漏问题