valgrind是一款Linux下內存調試工具,它可以檢測程序中存在的內存泄露等問題,下面就介紹怎麼使用valgrind工具來檢測內存泄露等問題。
1:獲取valgrind工具
這個直接去valgrind官網就可以免費下載到最新版本的valgrind,http://valgrind.org/,下載的壓縮版本格式是vargrind-3.7.0.tar.bz2,採用tar jxvf vargrind-3.7.0.tar.bz2進行解壓縮就可以了。
2:進入valgrind解壓縮目錄下,進行valgrind編譯和安裝
執行以下命令:
./configure
make
make install
執行以後,會提示你valgrind'安裝已成功。
3:valgrind使用介紹
(1):編寫源程序valtest.c
以上就是源程序代碼,這裏涉及到3個地方問題,如圖中註釋所示,我們採用valgrind來檢測。
我們先編譯源程序: gcc -g -o valtest valtest.c (注,其中的-g選項表明打開調試模式,再執行valgrind命令後,其會將源代碼中錯誤的地方用行號標示出來),編譯以後得到可執行文件valtest。
4:執行valgrind命令
執行以下命令:valgrind --tool=memcheck ./valtest
執行完以後得到以下結果:
上面就是採用valgrind執行的結果。
紅框標示無效的4字節寫操作,其對應第8和第9行代碼(執行結果中已給出)
//內存未釋放
int *p = (int*)malloc(10*sizeof(int));
p[10] = 10; //p[10]沒有分配內存
綠框表示對一塊內存進行了2次free操作,對應代碼13和14行
//同一塊內存被釋放2次(或更多次)
char *q = (char*)malloc(10*sizeof(char));
free(q);
free(q);
籃框表示未有初始化,直接執行了條件判斷語句。