为什么我的程序,运行时间越长,占用内存越多

cheneyhehe 2008-02-20 02:03:09
我是MFC做的,里面有DLL,和简单的两个线程

内存的增长不是很明显,但打开子窗口会调用一个DLL,这一次增长很多,
以后每次打开这个窗口又会长一点点,最郁闷是关上子窗口,内存是不释放的,导致一直增加.

不知道有没有说清,请大家帮助
...全文
307 点赞 收藏 22
写回复
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
gotooker 2008-02-28
你的子窗体是模式的还是非模式的,非模式的话要调用destroywindow才能释放内存的,会不会是这个原因
回复
cheneyhehe 2008-02-27
BoundsChecker发现是一DLL里有memory leaks,看来可能是DLL的释放的问题
回复
hjyhh 2008-02-27
路过
回复
Joyfulmath 2008-02-21
内存泄漏, BoundsChecker试试
回复
cnzdgs 2008-02-20
最小化的时候是把暂时不用的内存交换到分页文件,释放出物理内存,当要使用时再次交换到物理内存中,所以并不是自动清理内存,只有进程结束时才会清理。
回复
lindex 2008-02-20
找个查内存泄露的软件吧,定位到泄露行和调用堆栈。
注意new create load等
回复
mr.zhoux 2008-02-20
应该是句柄的问题吧, CloseHandle ...
回复
cheneyhehe 2008-02-20
http://topic.csdn.net/t/20051001/12/4305097.html#

http://topic.csdn.net/t/20050923/09/4288683.html

看来有类似的问题了,也有人真的试过最小化,呵呵
回复
cheneyhehe 2008-02-20
每次不到30KB,不过关键是持续增加比较麻烦
回复
cheneyhehe 2008-02-20
偶然发现当我最小化我的窗体的时候,内存突然数量级的下降...

于是我想到借最小化中清理内存的一段源代码
回复
cnzdgs 2008-02-20
在程序中找new和delete,通常情况下这两个的数量应该是一样的。

还有,每开关一次窗口,内存增加多少啊?
回复
xt_xiaotian 2008-02-20
会不会是句柄泄露啦,任务管理器中看看句柄数是否持续增加。
回复
steed_jet 2008-02-20
另外建议对一些调用的函数返回值测试下,是否有没有成功执行的函数。
回复
steed_jet 2008-02-20
是否程序中有等待的事件,退出的时候只有界面销毁,事件没有响应一直等待结束;还有是否是调用dll的方式问题,有种dll调用方式显示的加载和显示的卸载。
回复
redpetallsg 2008-02-20
找“new”
回复
cheneyhehe 2008-02-20
调用的DLL中存在内存泄漏?这个我一直没有往这个上面想过
谢谢你的提示,我再看看DLL方面
回复
cheneyhehe 2008-02-20
我找到一个地方new后没有delete,不过影响不大,已经改过,关键是,子窗口为什么不自己释放内存

我希望做到的是主窗口换出子窗口实现功能(调用DLL和启动线程,这时候允许内存的正常增加),关闭后回到主窗口,子窗口站用的内存被释放

有没有方法?苦恼中....
回复
queshangxintou 2008-02-20
这个关闭子窗口内存没有释放,肯定是存在内存泄漏了,我认为可能是你调用的DLL中存在内存泄漏的程序。
回复
cheneyhehe 2008-02-20
已经是AfxBeginThread了,并没有用CreateThread,看来问题不在这儿
回复
cheneyhehe 2008-02-20
谢谢上面两位,我试试beginthread看看
回复
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
社区公告
暂无公告