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
:程序结束前仍可访问(未释放但非泄漏,需评估必要性)