例有如下代码:CDC memDC;
CBitmap memBmp;
// 已创建兼容
CBitmap* pOld = memDC.SelectObject(&memBmp);
//... 使用memDc.SelectObject(pOld); // 如果没有这一句会不会对象泄漏
memBmp.DeleteObject();
memDC.DeleteDC();也就是问: 当对象还选设备上下文没有选出来的时候直接DeleteObject会不会对象泄漏,
望高手指教CDC 设备上下文 对象泄漏

解决方案 »

  1.   

    我记得是不会,测一下还不简单,去了那一句写个循环,看任务管理器里的gdi计数。
      

  2.   

    memDc.SelectObject(pOld); // 如果没有这一句会不会对象泄漏
    memBmp.DeleteObject(); // 没有上一句,这不一句就不对了,还在dc中,不能删除对象
    memDC.DeleteDC();
      

  3.   

    不会 ,windows程序设计上说  是会的。我觉得书本是错误的。之所以需要 将旧的gdi对象选回到dc中。是一个好习惯,而且中途把dc传入另一个函数,会造成与你预期的效果不一样。所以为了避免这回惣现象的出现,  就按照这个规定
      

  4.   

    memBmp.DeleteObject();
    memDC.DeleteDC();
    这两句多余,CDC析构函数会自动调用的
      

  5.   

    memDc.SelectObject(pOld); // 如果没有这一句会不会对象泄漏  
    不会产生泄露