接这个已经结了的贴:http://topic.csdn.net/u/20101209/12/57afbd8c-1919-4919-a864-0cd3909ffe04.html
m_pGraph = Graphics::FromHDC(m_pParent->m_hdcMemory);
m_pImage = Image::FromFile(m_strImgFile);
这两行代码创建的内存,用delete m_pGraph来释放内存可以吗?好像在.net中内存是自动回收的,VC6没有用.net,该怎么操作?

解决方案 »

  1.   

    new 的当然要delete []m_pGraph 
    没有new就不要
      

  2.   

    不是new出来的,就是用这两行代码创造出来的,冒似GDI+都不用new
      

  3.   


    VOID Example_FromHDC(HDC hdc)
    {
       Graphics* pGraphics = Graphics::FromHDC(hdc);
       Pen pen(Color(255, 255, 0, 0));
       pGraphics->DrawRectangle(&pen, 10, 10, 200, 100);
       delete pGraphics;
    }
      

  4.   

    static Graphics* FromHDC(IN HDC hdc)
    {
            return new Graphics(hdc);
    }inline Image* Image::FromFile(IN const WCHAR* filename,IN BOOL useEmbeddedColorManagement)
    {
        return new Image(
            filename, 
            useEmbeddedColorManagement
        );
    }注意这2个函数的new,所以释放的时候还是要delete
      

  5.   

    可以在类的析构函数或mfc类的OnDestroy里面释放资源
    if(m_pGraph != NULL)
    {
       delete m_pGraph;
       m_pGraph = NULL;
    }
    if(m_pImage!= NULL)
    {
       delete m_pImage;
       m_pImage = NULL;
    }