求教:VC++如何检测是否存在内存泄露??
RT
系统代码量有点大(含30多个类),
vs2008开发环境,
纯C/C++的(即不含MFC、数据库之类的);
只有三分之一的代码是我自己写
。。。
现在的任务是要排查代码是否存在内存泄露,
本人菜鸟,请各位支点招。。。(推荐一些工具或方法或建议)
非常感谢!!!
[解决办法]
http://blogold.chinaunix.net/u3/109695/showart_2188730.html
[解决办法]
google一下 Visual Leak Detector
很多类似的工具 检测内存泄露
[解决办法]
Visual Leak Detector
这个工具不错的
[解决办法]
你再单独创建一个线程,
while(1)
{
Sleep(10000);
// 用API GlobalMemoryStatus 记录内存状态
}
这样,通过查看记录,就可以知道是否存在内存泄露,
如果发现了,就屏蔽一些代码 ,再测试,如此反复,就可以了
[解决办法]
用专用工具,虽然提示得多了点,但范围缩得挺小了,比自己瞎忙活强
[解决办法]
不用啊。。。。VC里你程序直接关闭,假如有泄漏的话,就有提示的呀。。
比如你直接 char *p = new char[100]; 不释放 直接关闭就会有提示的呀。。
要是你的程序里是一直申请,到关闭的时候都正常释放的就不好搞了。。估计那些工具也不大管用吧。。
不过你可以把new给重载,然后做好统计,把哪个地方申请最多的,给打出日志看一下 。。。
[解决办法]
crt,vc自己的程序包就有这个能力
[解决办法]
[解决办法]
用boundcheck等工具
[解决办法]
Visual Leak Detector
boundcheck
Visual Leak Checker
[解决办法]
就在Debug下执行F5后退出,如没提示就没有
[解决办法]
专用工具很多. 我就不举例子了.
但是尽信工具不如没有工具. 有些基本的人工办法我认为比工具的可信度更高.
1.任务管理器.所有的内存或资源泄露都可以看到.
2.模块化编译,方便定位有问题的模块.
3.怀疑存在问题的模块,加上循环测试,很快就能定位到具体代码了.
查找内存泄露只是个体力活,方法得当,事半功倍.
[解决办法]