不解!!窗体释放后内存并没有释放??

午秋 2005-11-14 04:43:49
我做了一个简单的测试,新建一个MFC程序,新建一个对话框CWebDlg,对话框中放了一个WebBrowse控件,点击主界面中的按钮可以模式打开CWebDlg
通过任务管理器中可以看出,程序开始运行时占用内存4M多,当CWebDlg打开时内存一下子上升到12M。
好吧,因为CWebDlg中有个WebBrowse,内存大情有可原,那窗体关掉后内存应该会变小吧。
可是,关掉CWebDlg后,内存并没有变小,还稍稍大了一点。
{
CWebDlg dlg;
dlg.DoModal();
}
窗体变量是局部的,且以模式显示,应该会释放的才对呀。
我让它以非模式打开,先Create,后再DestroyWindow,结果内存还是没降下来。
后来,我新增了一个对话框,CDlg2,不包含任何子控件,再用以上两种方式测试,结果还是一个,内存只升不降。

这到底是为什么呢?谁能解释一下!
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxyjyzxyjy 2005-11-17
  • 打赏
  • 举报
回复
不知这样认为对不对:

当你的程序退了时,你系统分配的内存并不是立即收回,特别是你内存较大,而没有程序请求内存时(或者说通过任务管理器不能立即反应内存的收回情况)。这部分在任务管理器看来还没有收回的内存其实可以为其它程序随时使用,如果一直没有内存请求,说不定过会儿再打开任务管理器查看,它已经回来了。

你可以做过控制台的程序进行测试看看。
sinall 2005-11-15
  • 打赏
  • 举报
回复
CDlg2、第二种方法;建议你多测试几次,可以用循环语句。
flyelf 2005-11-14
  • 打赏
  • 举报
回复
这个和对话框没有关系,主要是web控件有关,可以咨询jiangsheng,他对这个比较了解

3,245

社区成员

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

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