valgrind --leak-check=yes检查bufr编解码程序运行时提示still reachable: 568 bytes in 1 blocks,如下图示:

valgrind检查still reachable情况

于是怀疑有内存泄漏,难道是malloc或calloc后没有free?但这样仍看不出哪里代码出了问题,于是开启valgrind的选项--show-reachable=yes再运行一遍,如下图示:

valgrind检查still reachable情况

从上图可以看出问题代码所在,原来是忘了关闭日志文件了!果断添加了close_log_file()在程序最后关闭日志文件,再检测一遍,程序正常。如下图示:

valgrind检查still reachable情况

总结:(1)提示没有free或still reachable的,不仅需要考虑mallc、calloc没有free的问题,还需考虑文件打开没有关闭的问题。

   (2)开启valgrind的选项--show-reachable=yes能显示导致still reachable问题的代码,否则不显示。

 

相关文章:

  • 2021-11-20
  • 2021-08-25
  • 2022-12-23
  • 2021-09-27
  • 2021-06-01
  • 2021-11-29
  • 2022-12-23
  • 2022-01-08
猜你喜欢
  • 2022-12-23
  • 2022-01-29
  • 2022-01-30
  • 2021-08-15
  • 2021-12-12
  • 2021-10-09
  • 2021-05-22
相关资源
相似解决方案