电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> C++/VC>>如何查找vc内存泄漏:

如何查找vc内存泄漏

来源:大坡3D软件开发 | 2007-10-25 | (有4698人读过)

在写VC的程序经常发现有内存出错的情况,运行结束之后,就会有报告是否内存出现泄漏情况,如下面所示: 
Detected memory leaks! 
Dumping objects -> 
{223} normal block at 0x003CF650, 4 bytes long. 
 Data: <  < > E8 F6 3C 00  
{221} normal block at 0x003CF928, 16 bytes long. 
 Data: <( < ( <         > 28 F9 3C 00 28 F9 3C 00 CD CD CD CD CD CD CD CD  
{220} normal block at 0x003CF8D0, 24 bytes long. 
 Data: <  <   <   <     > D0 F8 3C 00 D0 F8 3C 00 D0 F8 3C 00 CD CD CD CD  
{219} normal block at 0x003CF878, 24 bytes long. 
 Data: <x < x < x <     > 78 F8 3C 00 78 F8 3C 00 78 F8 3C 00 CD CD CD CD  
{68} client block at 0x003C3418, subtype c0, 64 bytes long. 
a CDynLinkLibrary object at $003C3418, 64 bytes long 
a CDynLinkLibrary object at $003C3418, 64 bytes long 
Object dump complete. 

像这样情况,其实有还是可以找出来是在那里创建的。不过,并不是报告出来的,都是真实的内存泄漏。要仔细分析,才能作出决定。因此,就需要找到这块内存是在那里分配的。那么有什么办法呢?使用下面的函数: 
_CrtSetBreakAlloc(223); 
这个函数,就设置了当分配上面223那块内存时,就中断,然后就可以查看调用栈,知道那里出错了。 
不过,使用这个来判断,就要仔细地分析了,由于内存的分配是动态的,并不能保证每次分配内存的号码是一样的。 
C++/VC热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2021 电脑爱好者 版权所有 备案号:鲁ICP备09059398号