valgrind工具使用解析

      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);

籃框表示未有初始化,直接執行了條件判斷語句。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章