我使用GDI+进行画图,贴图都是在一个函数里面。因为刷新原因要不停的调用该函数。
此时问题出现了,资源管理器里面显示程序占用的内存在不停的增长,我跟到程序里面去看
m_pImageFrame = Image::FromFile(L"Skin\\picture.png");每运行一次类似的语句就会增加内存
在此函数的最后我使用了delete m_pImageFrame;但是内存仍然没有释放。程序占用内存仍然在不停的增长
各位高手帮帮忙,在此谢谢了!

解决方案 »

  1.   

    可能是某些地方你异常跳出了。
    建议使用auto_ptr之类的进行管理
      

  2.   

    检查下还有没有其他GDI+对象没有释放的,不一定是这个
      

  3.   

    delete m_pImageFrame;
    delete m_pImageLoad;
    delete m_pImageFrameBeafore;
    delete m_pImageFrameBack;
    delete m_pImagePhoto;  
    graph.ReleaseHDC(m_hdcMemory);
    ::ReleaseDC(m_hWnd,hdcScreen);
    DeleteDC(hdcScreen);
    hdcScreen=NULL;
    ::ReleaseDC(m_hWnd,hdcTemp);
    DeleteDC(hdcTemp);
    hdcTemp=NULL;
    DeleteObject(hBitMap);
    DeleteDC(m_hdcMemory);
    m_hdcMemory=NULL;全部释放了
      

  4.   

    这个图片又不是一直被改变不要每次都重新加载一次啊 只要在前边进行一次初始化后一直存在内存当然啊直到不用的时候再delete啊,你这样做很费资源
      

  5.   


    你的程序你认为释放了,但是你确定释放成功吗?DeleteObject(hBitMap)这句就有可能失败
      

  6.   

    估计楼主是在onpaint里面不停的CreateCompatibleDC和CreateCompatibleBitmap,解决方法有2
    1,在onpaint最后参考4楼办法,不可全用上。
    2,可在OnInitDialog创建dc,窗口销毁时才释放。避免经常创建和释放,提高效能
      

  7.   


    Image::FromFile
    This method returns a pointer to the new Image object.