valgrind linux下内存泄露检测工具

一linux下安装valgrind 步骤

1、下载最新版本

2、tar -jxvf valgrind-3.15.0.tar.bz2.tar.bz2

3、cd valgrind-3.15.0

4、sudo ./configure

5、sudo make

6、sudo make install

7、sudo vim /etc/profile.d/valgrind.sh
添加

VALGRIND_ROOT=/home/edan/download/valgrind-3.15.0
VALGRIND_INCLUDE=/usr/local/include/valgrind
VALGRIND_LIB=/usr/local/lib/valgrind
export VALGRIND_ROOT VALGRIND_INCLUDE VALGRIND_LIB

8、修改文件权限:sudo chmod +x valgrind.sh

9、./valgrind.sh

10、valgrind --version

11、valgrind使用手册

常用测试命令:
valgrind --tool=memcheck --log-file=./rsuleck.log --leak-check=full --show-leak-kinds=all --track-origins=yes --trace-children=yes --time-stamp=yes ./test

.................
==00:00:00:08.235 49809==    at 0x4C2DE96: malloc (vg_replace_malloc.c:309)
==00:00:00:08.235 49809==    by 0x400C44: cJSON_New_Item (in /home/edan/testCJSON/a.out)
==00:00:00:08.235 49809==    by 0x40433F: cJSON_CreateNumber (in /home/edan/testCJSON/a.out)
==00:00:00:08.235 49809==    by 0x403BE0: cJSON_AddNumberToObject (in /home/edan/testCJSON/a.out)
==00:00:00:08.235 49809==    by 0x405395: main (in /home/edan/testCJSON/a.out)
==00:00:00:08.235 49809== 
==00:00:00:08.235 49809== LEAK SUMMARY:
==00:00:00:08.235 49809==    definitely lost: 0 bytes in 0 blocks
==00:00:00:08.235 49809==    indirectly lost: 0 bytes in 0 blocks
==00:00:00:08.235 49809==      possibly lost: 0 bytes in 0 blocks
==00:00:00:08.235 49809==    still reachable: 401 bytes in 11 blocks
==00:00:00:08.235 49809==         suppressed: 0 bytes in 0 blocks
==00:00:00:08.235 49809== 
==00:00:00:08.235 49809== For lists of detected and suppressed errors, rerun with: -s
==00:00:00:08.235 49809== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Memcheck将内存泄露分为两种,一种是可能的内存泄露(Possibly lost),另外一种是确定的内存泄露(Definitely lost)。Possibly lost 是指仍然存在某个指针能够访问某块内存,但该指针指向的已经不是该内存首地址。Definitely lost 是指已经不能够访问这块内存。而Definitely lost又分为两种:直接的(direct)和间接的(indirect)。直接和间接的区别就是,直接是没有任何指针指向该内存,间接是指指向该内存的指针都位于内存泄露处。在上述的例子中,根节点是directly lost,而其他节点是indirectly lost

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值