安裝
1. yum安裝
yum -y install valgrind
2. 手動安裝
- 下載
- 解壓
tar Valgrind壓縮包
- 配置
./configure --prefix=/usr/local/valgrind
- 編譯
make
- 安裝
make install
- 設置到環(huán)境變量
- 編輯個人配置文件
vim ~/.bashrc
- 增加valgrind路徑到環(huán)境變量
PATH=${PATH}:/usr/local/valgrind/bin
- 更新個人配置文件
source ~/.bashrc
檢測內存泄露的方式
gcc XXX.c -g -o 程序
valgrind --tool=memcheck --leak-check=full ./程序
選項--tool
tool | 作用 |
---|---|
Memcheck | 發(fā)現開發(fā)中絕大多數內存錯誤使用情況,是選項默認值。 |
Callgrind | 檢查程序中函數調用過程中出現的問題雾家。 |
Cachegrind | 檢查程序中緩存使用出現的問題。 |
Helgrind | 檢查多線程程序中出現的競爭問題趴俘。 |
Massif | 檢查程序中堆棧使用中出現的問題。 |
Extension | 利用core提供的功能奏赘,編寫特定的內存調試工具寥闪。 |
選項--leak-check
leak-check | 作用 |
---|---|
summary |
總結式內存泄露信息(默認) |
full |
詳細式內存泄露信息 |
no |
不顯示內存泄露信息 |
常見錯誤
錯誤 | 中文解釋 |
---|---|
Use of uninitialised memory | 使用未初始化的內存 |
Reading/writing memory after it has been free’d | 使用已經釋放了的內存 |
Reading/writing off the end of malloc’d blocks | 使用超過malloc分配的內存空間 |
Reading/writing inappropriate areas on the stack | 對堆棧的非法訪問 |
Memory leaks – where pointers to malloc’d blocks are lost forever | 申請的空間是否有釋放 |
Mismatched use of malloc/new/new [] vs free/delete/delete [] | malloc/free/new/delete申請和釋放內存的匹配 |
Overlapping src and dst pointers in memcpy() and related functions | src和dst的重疊 |