Valgrind 检测内存泄漏问题

Posted by KalosAner on July 14, 2025

Valgrind 是检测程序内存泄漏的非常好的工具。对于需要检测的程序需要在编译时加上 -g 选项来保留调试信息,并且建议禁用优化(-O0),避免优化干扰错误定位。

使用

使用之前需要通过 sudo apt install valgrind 进行安装。 然后直接使用 valgrind --leak-check=full ./your_program 来检测程序是否有内存泄漏问题。 其他一些常用的选项:

1
2
3
4
5
--leak-check=full:显示泄漏的详细堆栈15。
    
--track-origins=yes:追踪未初始化内存的来源(如未初始化的变量)24。
    
--log-file=log.txt:输出到文件(替代终端显示)。

结果

  • definitely lost:确认泄漏(必须修复)。
  • indirectly lost:间接泄漏(如结构体中指针未释放)。
  • possibly lost:可能泄漏(指针指向内存中间位置)。
  • still reachable:程序结束前仍可访问(未释放但非泄漏,需评估必要性)