首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

[]关于SelectObject对象泄漏的有关问题

2013-04-20 
[求助]关于SelectObject对象泄漏的问题!例有如下代码:CDC memDCCBitmap memBmp// 已创建兼容CBitmap* pO

[求助]关于SelectObject对象泄漏的问题!
例有如下代码:


CDC memDC;
CBitmap memBmp;
// 已创建兼容
CBitmap* pOld = memDC.SelectObject(&memBmp);
//... 使用

memDc.SelectObject(pOld); // 如果没有这一句会不会对象泄漏
memBmp.DeleteObject();
memDC.DeleteDC();



也就是问: 当对象还选设备上下文没有选出来的时候直接DeleteObject会不会对象泄漏,
望高手指教 CDC? 设备上下文?对象泄漏
[解决办法]
我记得是不会,测一下还不简单,去了那一句写个循环,看任务管理器里的gdi计数。
[解决办法]
编译出错,memDc未定义
[解决办法]
应该不泄漏,我也是这么写的
[解决办法]
memDc.SelectObject(pOld); // 如果没有这一句会不会对象泄漏
memBmp.DeleteObject(); // 没有上一句,这不一句就不对了,还在dc中,不能删除对象
memDC.DeleteDC();


[解决办法]
不会 ,windows程序设计上说  是会的。

我觉得书本是错误的。

之所以需要 将旧的gdi对象选回到dc中。

是一个好习惯,而且中途把dc传入另一个函数,会造成与你预期的效果不一样。

所以为了避免这回惣现象的出现,  就按照这个规定


[解决办法]
memBmp.DeleteObject();
memDC.DeleteDC();
这两句多余,CDC析构函数会自动调用的
[解决办法]
memDc.SelectObject(pOld); // 如果没有这一句会不会对象泄漏  
不会产生泄露

热点排行