托管内存泄漏检测 - C#

时间:2015-08-12 12:25:47

标签: c# winforms opengl memory-leaks

如何在c#代码中检测托管内存泄漏? 它是关于使用openGL渲染3D对象的windowsform应用程序。每次重绘内存泄漏都会发生。

根据使用DebugDiag tool进行的分析,“C:\ Windows \ System32 \ ig75icd32.dll”是内存泄漏的来源。
这是openGL或我的代码中的错误吗?我该如何解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:1)

我找到了记忆韭菜来源。这是因为opneGL列表 在我的代码的一部分中,我有每个3D对象的代码

 void UpdateList(){
   _List = Gl.glGenLists(1);
   Gl.glNewList(_List, Gl.GL_COMPILE);
   Polygons.Draw();
   Gl.glEndList();
}

这是一个循环(对象的循环更新列表)。为每个3D对象生成了很多列表,并且有许多活动对象。我改变了这样的代码

void UpdateList(){
   if(_List==-1)
       _List = Gl.glGenLists(1);
   Gl.glNewList(_List, Gl.GL_COMPILE);
   Polygons.Draw();
   Gl.glEndList();
}

因此,每个3D对象只生成一个列表handel。