Linux C/C++ 程序的内存泄漏定位方法
定位 Linux C/C++ 程序的内存泄漏问题,一般需要使用专门的工具和方法论逐步排查。以下提供一套完整的定位流程和方法:
一、初步确认内存泄漏现象
在定位之前,首先需要确认是否真的存在内存泄漏:
-
使用
top
或htop
命令,观察进程内存占用是否持续增长。 -
使用
ps aux
命令,观察进程的 RSS(常驻内存)和 VSZ(虚拟内存)是否持续增长。
ps aux | grep your_program
二、使用 Valgrind 工具定位内存泄漏(推荐)
Valgrind 是 Linux 下定位 C/C++ 内存泄漏的首选工具,功能强大,使用简单。
步骤1:安装 Valgrind
sudo apt-get install valgrind
步骤2:编译程序时开启调试信息
为了准确定位泄漏的代码行,需要在编译时开启调试选项(-g
):
gcc -g -O0 your_program.c -o your_program
g++ -g -O0 your_program.cpp -o your_program
注意