最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unix下C程序內(nèi)存泄漏檢測工具Valgrind的安裝與使用詳解

 更新時間:2013年08月13日 09:08:17   作者:  
以下是對Unix下C程序內(nèi)存泄漏檢測工具Valgrind的安裝與使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
Valgrind是一款用于內(nèi)存調(diào)試、內(nèi)存泄漏檢測以及性能分析的軟件開發(fā)工具。
Valgrind的最初作者是Julian Seward,他于2006年由于在開發(fā)Valgrind上的工作獲得了第二屆Google-O'Reilly開源代碼獎。
Valgrind遵守GNU通用公共許可證條款,是一款自由軟件。

官網(wǎng)
http://www.valgrind.org
 
下載與安裝
#wget http://www.valgrind.org/downloads/valgrind-3.8.1.tar.bz2
#tar xvf valgrind-3.8.1.tar.bz2
#cd valgrind-3.8.1
#./configure --prefix=/usr/local/webserver/valgrind
#make
#make install

測試代碼
復(fù)制代碼 代碼如下:

#include <stdlib.h>
int* func(void)
{
&nbsp;&nbsp; int* x = malloc(10 * sizeof(int));
&nbsp;&nbsp; x[10] = 0;&nbsp; //問題1: 數(shù)組下標(biāo)越界
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;int main(void)
{
&nbsp;&nbsp; int* x=NULL;
&nbsp;&nbsp; x=func();
&nbsp;&nbsp; //free(x);&nbsp;
&nbsp;&nbsp; x=NULL;
&nbsp;&nbsp; return 0;&nbsp;&nbsp; //問題2: 內(nèi)存沒有釋放
&nbsp;}

編譯
#gcc -g -o test test.c

內(nèi)存檢查
#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test

報告:


說明
Invalid write of size 4:表示數(shù)組越界寫了4字節(jié)
40 bytes in 1 blocks:表示因程序退出而發(fā)生內(nèi)存泄露40字節(jié)

修復(fù)bug,重新檢查提示已經(jīng)沒有內(nèi)存泄露



文檔:
Valgrind 中包含的 Memcheck 工具可以檢查以下的程序錯誤:

使用未初始化的內(nèi)存 (Use of uninitialised memory)
使用已經(jīng)釋放了的內(nèi)存 (Reading/writing memory after it has been free'd)
使用超過malloc分配的內(nèi)存空間(Reading/writing off the end of malloc'd blocks)
對堆棧的非法訪問 (Reading/writing inappropriate areas on the stack)
申請的空間是否有釋放 (Memory leaks – where pointers to malloc'd blocks are lost forever)
malloc/free/new/delete申請和釋放內(nèi)存的匹配(Mismatched use of malloc/new/new [] vs free/delete/delete [])
src和dst的重疊(Overlapping src and dst pointers in memcpy() and related functions)
重復(fù)free

相關(guān)文章

  • C++中的throw關(guān)鍵字詳解

    C++中的throw關(guān)鍵字詳解

    throw關(guān)鍵字是在C語言中用來拋出異常的關(guān)鍵字,它通常與try和catch一起使用,用于在程序中發(fā)生錯誤時進(jìn)行異常處理,當(dāng)遇到無法處理的錯誤情況時,我們可以使用throw關(guān)鍵字主動拋出異常,所以本文給大家詳細(xì)的介紹一下C++中的throw關(guān)鍵字,需要的朋友可以參考下
    2023-09-09
  • C++實現(xiàn)雙向鏈表(List)

    C++實現(xiàn)雙向鏈表(List)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C和C++ const的聲明差異

    C和C++ const的聲明差異

    本文給大家簡單匯總了下C語言的const與C++的const的聲明差異,非常的簡單,也很實用,有需要的小伙伴可以參考下
    2016-03-03
  • 淺談C語言結(jié)構(gòu)體

    淺談C語言結(jié)構(gòu)體

    本文主要介紹C語言 結(jié)構(gòu)體的知識,學(xué)習(xí)C語言肯定需要學(xué)習(xí)結(jié)構(gòu)體,這里詳細(xì)說明了結(jié)構(gòu)體并附示例代碼,供大家參考學(xué)習(xí),有需要的小伙伴可以參考下
    2021-10-10
  • c++中std::hash以及萬能hash的使用方式

    c++中std::hash以及萬能hash的使用方式

    這篇文章主要介紹了c++中std::hash以及萬能hash的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言零基礎(chǔ)入門(2)

    C語言零基礎(chǔ)入門(2)

    這篇文章主要為大家詳細(xì)介紹了C語言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++實現(xiàn)封裝的順序表的操作與實踐

    C++實現(xiàn)封裝的順序表的操作與實踐

    在程序設(shè)計中,順序表是一種常見的線性數(shù)據(jù)結(jié)構(gòu),通常用于存儲具有固定順序的元素,與鏈表不同,順序表中的元素是連續(xù)存儲的,因此訪問速度較快,但插入和刪除操作的效率可能較低,本文將詳細(xì)介紹如何用 C++ 語言實現(xiàn)一個封裝的順序表類,深入探討順序表的核心操作
    2025-02-02
  • 詳解C語言內(nèi)核字符串拷貝與比較

    詳解C語言內(nèi)核字符串拷貝與比較

    本文將探索一下字符串的拷貝與比較,與應(yīng)用層不同內(nèi)核字符串拷貝與比較也需要使用內(nèi)核專用的API函數(shù),字符串的拷貝往往伴隨有內(nèi)核內(nèi)存分配,我們將首先簡單介紹內(nèi)核如何分配堆空間,然后再以此為契機簡介字符串的拷貝與比較
    2022-09-09
  • Qt開發(fā)之QTreeWidget的使用教程詳解

    Qt開發(fā)之QTreeWidget的使用教程詳解

    這篇文章主要為大家詳細(xì)介紹了Qt中QTreeWidget使用的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Qt有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • 基于C語言掃雷游戲的設(shè)計與實現(xiàn)

    基于C語言掃雷游戲的設(shè)計與實現(xiàn)

    大家好,本篇文章主要講的是基于C語言掃雷游戲的設(shè)計與實現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

江津市| 荆门市| 建昌县| 蒙阴县| 阜平县| 滦平县| 富民县| 都安| 南安市| 渭源县| 手游| 维西| 内乡县| 昆明市| 洪泽县| 湖北省| 扶沟县| 长汀县| 佛坪县| 穆棱市| 抚松县| 宜丰县| 军事| 石门县| 察哈| 德清县| 赤水市| 衡阳市| 什邡市| 临夏市| 锦屏县| 岱山县| 滨州市| 石楼县| 综艺| 上犹县| 罗山县| 芦溪县| 黑河市| 奉新县| 白玉县|