2012-09-12 44 views
2
  1. 兩個IDirect3DVertexDeclaration9函數FindNextValidTechnique()分配的對象被釋放但不被銷燬。在PIX中,狀態「App Refs」爲「0」,但狀態「Destruction」爲「Never」。
  2. 一個IDirect3DIndexBuffer9由應用程序分配的對象被釋放但不被銷燬。在PIX中,狀態「App Refs」爲「0」,但狀態「Destruction」爲「Never」。在我調用函數SetIndices(NULL)後,索引緩衝區的內存泄漏消失。
  3. 由功能D3DXCreateEffect()分配的對象IDirect3DVertexShader9IDirect3DPixelShader9被釋放但不被銷燬。在PIX中,狀態「App Refs」爲「0」,但狀態「Destruction」爲「Never」。但是,在撥打SetVertexShader(NULL)SetPixelShader(NULL)後,兩者的內存泄漏消失了。
  4. 一個IDirect3DSwapChain9分配了功能CreateAdditionalSwapChain()的對象被釋放但不被銷燬。 GetBackBuffer()曾經被稱爲,但Surface後來發佈。在PIX中,它們的狀態「App Refs」爲「0」,但狀態「銷燬」爲「從不」。
  5. 因爲,IDirect3DDevice9IDirect3D9對象被釋放但沒有被銷燬。

我檢查了PIX和應用程序中所有對象的引用計數。他們都是0.我不知道爲什麼內存泄漏仍然發生。我不認爲SetIndices(NULL)等是必要的。有人能給我一些建議嗎?謝謝。DX9內存泄漏:釋放()返回0,但DestroyObject不叫

回答

0

嘗試通過DirectX控制面板使用Debug D3D DLL,打開「Break on Memory Leaks」,您會在調試輸出中看到調用堆棧。