CBitmap与CImageList使用及资源释放 procexp.exe来监视gdi对象是不是泄漏! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将CBitMap add(CImageList::add)至CImageList,调用DeleteObject(),然后将CImageList SetImageList(CListCtrl::SetImageList)至CListCtrl,对CImageList进行DeleteImageList(CImageList::DeleteImageList),但是列表的图标仍然显示正常的,感觉很怪异呀~哪位大牛能不能帮忙解释一下吗???是不是我可以理解为CImageList::add、CListCtrl::SetImageList都其实加入的是副本? 还是说DeleteObject、DeleteImageList不是我们通常以为的delete资源释放? 有人帮忙回答没?是不是我可以将加载CBitMap的GDI句柄理解为类似于tr1::shared_ptr的东西,当所有指向该bitmap的GDI都被delete之后,CBitMap加载的图片的内存就被释放掉了? 但是在调试中遇到的也不对呀,CImageList::add的时候也没有见GDI句柄值的增加。哪位高手指点下吧~~~真心不懂呀 是的你是释放了,但是你没有保存下来原来的,所以才导致你的这个问题。把原来的句柄保存下来,delete完了,再选 回去就行了。 我想是我没有表达清楚,我的问题是:CBitMap对象load之后,调用CImageList::add,再deleteObject(),为什么这个图片还能正常显示?我把CImageList 对象通过CListCtrl::SetImageList设置进CListCtrl,调用CImageList::DeleteImageList为什么CListCtrl还能正常显示这些图片的信息? 检查是否资源泄漏的办法之一:在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 关于clistctrl来回切换的问题 创建一个子窗体,我想隐藏怎么弄? 跪求VC2003解决方案的目录设置问题 奇怪!MFC自动生成的ID号的#define定义值竟然有多处重复!!!看MFC给我定义的!!!怎么会这样?? 正式闭关修炼!希望各位提供学习材料! 用什么函数可以取得系统日期 一个白痴问题!if(!dlg.DoModal())的意思是什么?在线等待! 怎样在代码中让WINDOWS重新启动并进入DOS直接运行一个批处理文件? 连接过多会断开连接 什么问题,请指教 版主写的“自绘下拉列表框” 禁用状态怎么添加? 不行了,再次回CSDN求高人解答。 做的共享软件哪里托管下载比较好
还是说DeleteObject、DeleteImageList不是我们通常以为的delete资源释放?
是不是我可以将加载CBitMap的GDI句柄理解为类似于tr1::shared_ptr的东西,当所有指向该bitmap的GDI都被delete之后,CBitMap加载的图片的内存就被释放掉了? 但是在调试中遇到的也不对呀,CImageList::add的时候也没有见GDI句柄值的增加。哪位高手指点下吧~~~真心不懂呀
我想是我没有表达清楚,我的问题是:CBitMap对象load之后,调用CImageList::add,再deleteObject(),为什么这个图片还能正常显示?我把CImageList 对象通过CListCtrl::SetImageList设置进CListCtrl,调用CImageList::DeleteImageList为什么CListCtrl还能正常显示这些图片的信息?
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!