我使用OpenGL做了一个3D的图形处理程序,在程序中每增加一个图形、每做一个移动或旋转就使用Invalidate(false);来刷新界面,实现图形的无闪烁重新绘制,但是我的内存使用量大量的增加,特别是使用鼠标的滚轮和鼠标拖动之后,内存的使用量增加的更快,议会就会死机,各位打下请帮小弟个忙好么,告诉我怎样才能使程序占用的内存不增加,或是增加的不时很快,也就是如何在程序运行中动态的释放内存。

解决方案 »

  1.   

    肯定是程序请求的系统资源没有释放掉。好像Opengl的rc资源也要释放的。
      

  2.   

    应该是你的绘制代码有内存泄露,你检查一下绘制代码是不是有临时new出来的东东,没有删除
      

  3.   

    其实有时Invalidate(FALSE)未必好,
    像我现在做的一个项目,用它来刷新还是有点闪。最好是用异或重画。
    用背景色画该画的地方。
      

  4.   

    谢谢各位,我发现了内存泄露的地方了,我使用了两个自定义的函数进行OpenGL的初始化,Init2DOpenGL()和Init3DOpenGL()在里面使用pDC=new CClientDC(this),每次刷新重绘页面的时候都会调用这个函数之一(在2D场景中调用Init2DOpenGL(),在2D场景中调用Init3DOpenGL()),现在还没有像好在什么地方删除这个指针,因为在每次绘制完图形后删除这个设备指针的话,程序又会在其它的地方出错,谢谢各位的帮助和鼓励,以后还要请大家多多帮助。