7435|13

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC下的内存泄露问题该怎么调试? [复制链接]

我在一个对话框中有一个CTreeCtrl与一个CListBox,自己从CTreeCtrl与CListBox中派生自己的类,其中CTreeCtrl用于从一个文本中提取信息并创建一个CTree,CListBox用于显示相关树项的内容。现在的问题是,反复启动这个对话框就会发现内存减少。
第一次启动后再退出,发现内存比启动前减少了;以后启动对话框内存可能不减少,也可能减少,感觉是随机的,总规律还是会减少。我的代码中只有一个地方用new 分配了空间,也释放了;也没有自己编写CDC等控制,CRect还是有的。还有我用到了内存映像文件,但是我根据说上的 例子做了资源释放,不知道怎么搞的,跟踪调试几天了还没有解决这个问题。

最新回复

能不用的控件不用,能简洁的代码简洁,能注释掉的暂时注释掉,暂时缓解了(泄露慢,但还漏),结贴了!  详情 回复 发表于 2008-11-24 18:57
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
LZ把可能 的原因都给排除了,还让大家找原因。

能提供源代码不?其实原因大多数时候都很简单,没有发现的时候一般都会认为是高深的问题。
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
抱歉我没法提供源代码啊,单位的电脑都是保密的,监控很严,我可不敢为这个小问题犯错误。
我现在看哪一块代码都不顺眼,都有可能,要崩溃了。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 thskkk 的回复:
抱歉我没法提供源代码啊,单位的电脑都是保密的,监控很严,我可不敢为这个小问题犯错误。
我现在看哪一块代码都不顺眼,都有可能,要崩溃了。


没有办法

只能一句句的查,查每个函数的帮助,仔细看其说明部分,是否要求调用相关的释放函数。
例如:new<>free
     malloc<>delete
     Create...<>Delete.../Release...
     
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
windows CE.net 在堆中创建的内存块不能够移动,多次创建内存块 释放内存块回产生内存碎块。而和堆相关的函数最好用 HANDLE HeapCreate,LPVOID HeapAlloc, LPVOID HeapHeAlloc,DWORD HeapSize,BOOL HeapFree,BOOL HeapDestroy.
 
 
 

回复

77

帖子

0

TA的资源

宇宙尘埃

6
 
提供一个很笨也很简单的办法。

按模块注释掉你的代码,然后编译运行,先查出是哪个模块的问题,

然后再那个模块中一个函数一个函数的注释掉,看是哪个函数的问题,以此类推。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢各位,现在就用笨办法注释掉代码逐渐排查,范围在缩小,但是还没有找到真正元凶。另外发现一个奇怪问题,我的对话框如果只保留MFC自身产生的代码后反复调用DoModal()也会发现内存泄露,但是用AfxCheckMemory()并没有发现内存冲突,奇怪啊。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
学习一下
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
做单元测试
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
用什么工具测啊?
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

11
 
发现在MFC下处理WM_ERASEBKGND(OnEraseBkgnd)消息会产生内存泄露,不处理就没事了。
 
 
 

回复

85

帖子

1

TA的资源

一粒金砂(初级)

12
 
引用 11 楼 fengwx 的回复:
发现在MFC下处理WM_ERASEBKGND(OnEraseBkgnd)消息会产生内存泄露,不处理就没事了。

???是吗? 找微软算账
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
今天还在调试这个问题,注释掉了绝大部分代码,发现一个问题:我在OnInitDialog()中如果没有开启SetTimer( 1, 50, NULL )就不会有问题,如果这样做了有可能有泄露,有时候又没有。泪奔中,明天还要加班啊。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 
能不用的控件不用,能简洁的代码简洁,能注释掉的暂时注释掉,暂时缓解了(泄露慢,但还漏),结贴了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表