各位高手,紧急求救!内存泄漏!

huazaimh 2010-01-29 10:59:07
内存泄漏,每次代码一样,这个是在控件里面,在退出时会出现,不知道错误在何处,请各位提示一下该如何来做?
Detected memory leaks!
Dumping objects ->
{74} normal block at 0x015F1090, 64 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{73} normal block at 0x015F1100, 276 bytes long.
Data: < w w v w> CD CD CD CD 00 00 D1 77 00 00 DA 77 1B 76 DA 77
Object dump complete.

...全文
223 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueink_200451 2010-02-02
  • 打赏
  • 举报
回复
学习楼上的了。
saiyaman5 2010-02-02
  • 打赏
  • 举报
回复
不用担心,只要不是长时间运行的程序,泄漏一点没关系
向立天 2010-02-02
  • 打赏
  • 举报
回复
我的原则是内存泄漏一定要补上
我一般是这样
运行-退出
什么都不操作
看看有没有泄漏
如果没有在执行一些操作
直到找到泄漏的位置
这样一步一步一定能够定位到泄漏点
Torch009 2010-02-02
  • 打赏
  • 举报
回复
应该不是你的代码的问题,你都使用了什么库,应该是那些库里出现的内存泄漏
向立天 2010-02-02
  • 打赏
  • 举报
回复
找到所有new的地方
看看有没有对应的delete
huazaimh 2010-02-02
  • 打赏
  • 举报
回复
也有朋友跟我说,只要不是持续的泄漏问题不大
可是这个问题,我觉得不太好办
我不知道留在这里不太好,我也不确定到底是我的代码里面的问题呢,还是用到IJL库的问题
不过问题还是没有解决,期待各位高手给进一步的提示
谢谢!

--------------------------------------------
No memory leaks detected.
Visual Leak Detector is now exiting.
Detected memory leaks!
Dumping objects ->
{88} normal block at 0x01A52FB0, 64 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{87} normal block at 0x01A52B20, 276 bytes long.
Data: < w wRx w> CD CD CD CD 00 00 D1 77 00 00 DA 77 52 78 DA 77
Object dump complete.
hahaking119 2010-02-01
  • 打赏
  • 举报
回复
vld不错
wshcdr 2010-02-01
  • 打赏
  • 举报
回复
UP
Fireway2008 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 huazaimh 的回复:]
内存泄漏,每次代码一样,这个是在控件里面,在退出时会出现,不知道错误在何处,请各位提示一下该如何来做?
Detected memory leaks!
Dumping objects ->
{74} normal block at 0x015F1090, 64 bytes long.
Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{73} normal block at 0x015F1100, 276 bytes long.
Data: <      w  w v w> CD CD CD CD 00 00 D1 77 00 00 DA 77 1B 76 DA 77
Object dump complete.


[/Quote]
你用的编程软件是什么版本?
直接用安装一个BoundsChecker
就可以搞定了。


其它的方法都比较繁琐

sjdev 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 huazaimh 的回复:]
呵呵,我知道大概是些什么问题
可是不太好定位
我用上面的朋友说的方式,加宏的方法,可是不知道咋用
有点麻烦

[/Quote]

这个很简单的,我给你举个简单的例子:
1.假如你有个atl生成的com activex,你在stdafx.h中加入宏
2.在控件类的的dllmain中,或者,干脆在控件类的构造函数中调用宏_CrtDumpMemoryLeaks();
3.使用的时候,如果创建了控件对象,停止调试时output就提示了。可定位到文件。
huazaimh 2010-01-29
  • 打赏
  • 举报
回复
呵呵,我知道大概是些什么问题
可是不太好定位
我用上面的朋友说的方式,加宏的方法,可是不知道咋用
有点麻烦
副组长 2010-01-29
  • 打赏
  • 举报
回复
3楼方法高!
就是有时找不到入口函数,如果找到了也就好办了。
我一般都是大量屏蔽,如果泄露没了,说明在屏蔽的代码里面。然后再缩小屏蔽范围...
vercitti 2010-01-29
  • 打赏
  • 举报
回复
1、new或者malloc
2、gdi
3、导入资源或者对象没有释放


huazaimh 2010-01-29
  • 打赏
  • 举报
回复
高,我来试试
得先找到是哪个东东引起的才行!
sjdev 2010-01-29
  • 打赏
  • 举报
回复
此法只适合DEBUG版本.
sjdev 2010-01-29
  • 打赏
  • 举报
回复
添加
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_CLIENTBLOCK
#endif
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#ifdef _DEBUG
#define new DEBUG_CLIENTBLOCK
#endif


然后在入口函数处调用
_CrtDumpMemoryLeaks();
雪影 2010-01-29
  • 打赏
  • 举报
回复
使用相关调试工具,想办法定位到出错的代码行
mark
c_s0001 2010-01-29
  • 打赏
  • 举报
回复
方法1、双击这些行,看能否跳到代码位置
方法2、屏蔽一些代码,来确定泄露位置
方法3、使用一些API和工具
oldmanzhao 2010-01-29
  • 打赏
  • 举报
回复
LeakDiag挺好用的,可以去下载一个,网上有使用方法。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧