如何用dmalloc检测内存泄漏(原创)

三下五除二就给说完了

1.从www.dmalloc.com下载一个rpm包(你也可以下载源码包,本人比较懒 :) )

2.安装

3.export DMALLOC_OPTIONS=log=logname,debug=0x3
注:logname是你要生成记录的文件名

4.在你需要检测的源代码里包含dmalloc.h
#include <dmalloc.h>

5.保存退出编译
gcc -ldmalloc -o program code.c

6../program
会在当前目录下生成一个logname,现在你就可以看到你的程序未释放的内存了
以下是我一个程序的生成的log:


1134286917: 23: Dmalloc version '5.4.2' from 'http://dmalloc.com/'
1134286917: 23: flags = 0x3, logfile 'logfile'
1134286917: 23: interval = 0, addr = 0, seen # = 0, limit = 0
1134286917: 23: starting time = 1134286917
1134286917: 23: process pid = 12088
1134286917: 23: WARNING: tried to free(0) from 'module.c:23'
1134286917: 27: WARNING: tried to free(0) from 'module.c:23'
1134286917: 27: Dumping Chunk Statistics:
1134286917: 27: basic-block 4096 bytes, alignment 8 bytes
1134286917: 27: heap address range: 0x111000 to 0x49c000, 3715072 bytes
1134286917: 27:     user blocks: 4 blocks, 16048 bytes (39%)
1134286917: 27:    admin blocks: 6 blocks, 24576 bytes (60%)
1134286917: 27:    total blocks: 10 blocks, 40960 bytes
1134286917: 27: heap checked 0
1134286917: 27: alloc calls: malloc 14, calloc 0, realloc 0, free 13
1134286917: 27: alloc calls: recalloc 0, memalign 0, valloc 0
1134286917: 27: alloc calls: new 0, delete 0
1134286917: 27:   current memory in use: 432 bytes (3 pnts)
1134286917: 27:  total memory allocated: 6204 bytes (14 pnts)
1134286917: 27:  max in use at one time: 4988 bytes (12 pnts)
1134286917: 27: max alloced with 1 call: 4124 bytes
1134286917: 27: max unused memory space: 4740 bytes (48%)
1134286917: 27: top 10 allocations:
1134286917: 27:  total-size  count in-use-size  count  source
1134286917: 27:        4124      1           0      0  ra=0x6e5910
1134286917: 27:         864      6           0      0  module.c:43
1134286917: 27:         432      3           0      0  module.c:133
1134286917: 27:         432      3         432      3  module.c:185
1134286917: 27:         352      1           0      0  ra=0x6b276d
1134286917: 27:        6204     14         432      3  Total of 5
1134286917: 27: Dumping Not-Freed Pointers Changed Since Start:
1134286917: 27:  not freed: '0x111400|s1' (144 bytes) from 'module.c:185'
1134286917: 27:  not freed: '0x111500|s1' (144 bytes) from 'module.c:185'
1134286917: 27:  not freed: '0x111600|s1' (144 bytes) from 'module.c:185'
1134286917: 27:  total-size  count  source
1134286917: 27:         432      3  module.c:185
1134286917: 27:         432      3  Total of 1
1134286917: 27: ending time = 1134286917, elapsed since start = 0:00:00


可以看到,在185行的代码分配的432个字节的内存未被释放,...............................over
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值