常规C++程序中,局部变量,如函数内部声明的指针是不用delete的,因为超过作用域
编译器会自动删除.
使用MFC中,简单局部绘图函数声明一个临时PEN,
如:
CPen *pen = new CPen(PS_SOLID,1,WHITE);
CPen *oldpen = pDC->SelectObject(pen);
.....
pDC->SelectObject(oldpen);这段代码中
1.有哪个指针需要delete吗?
2.WINDOWS的资源HOBJECT需要释放吗?即DeleteObject?
3.如果声明的是GDI+的对象,如LinerGradientBrush,如果需要
  删除对象,有没什么地方和GDI不同?

解决方案 »

  1.   

    对的,new 出来的(指针),
    这是 C++ 的,C 的是 malloc,
    都是需要 delete 的,C 的是 free.
      

  2.   

    常规C++程序中,局部变量,如函数内部声明的指针是不用delete的,因为超过作用域 
    编译器会自动删除. 以上想法大错特错了,指针变量确实会被删除,可是它的内存却不会,内存泄露难道你没有遇到吗?没有特殊,new了就delete
      

  3.   

    对于GDI对象,一般都是通过DeleteObject来释放对象,
    new的指针用delete释放