国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

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

2020-01-26 15:57:08
字體:
供稿:網(wǎng)友
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)
{
   int* x = malloc(10 * sizeof(int));
   x[10] = 0;  //問題1: 數(shù)組下標越界
}                 
 int main(void)
{
   int* x=NULL;
   x=func();
   //free(x); 
   x=NULL;
   return 0;   //問題2: 內(nèi)存沒有釋放
 }

編譯
#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

主站蜘蛛池模板: 宣汉县| 平塘县| 彭州市| 抚顺市| 涟源市| 府谷县| 大城县| 乐清市| 高密市| 抚州市| 麻栗坡县| 乳山市| 商南县| 周宁县| 孟连| 麻城市| 天镇县| 德阳市| 营口市| 常州市| 营山县| 平江县| 泸水县| 丹棱县| 德保县| 龙川县| 蕲春县| 杭锦后旗| 虎林市| 修水县| 万全县| 岗巴县| 郸城县| 五寨县| 祁门县| 德保县| 涪陵区| 灌阳县| 松潘县| 湖州市| 城市|