Graphics DX9内存泄漏:Release()返回0,但未调用DestroyObject 由函数FindNextValidTechnique()分配的两个IDirect3DVertexDeclaration9对象将被释放,但不会被销毁。在PIX中,状态“App Refs”为“0”,但状态“Destruction”为“从不” 由应用程序分配的IDirect3DIndexBuffer9对象将被释放,但不会被销毁。在PIX中,状态“App Refs”为“0”,但状态“Destruction”为“从不”。调用函数setIndexs(NULL)后,索引缓冲区的内存泄漏消失 由函数D3DXCreateEffect()分配的IDirect3DVertexShader9和IDirect3DPixelShader9对象将被释放,但不会被销毁。在PIX中,状态“App Refs”为“0”,但状态“Destruction”为“从不”。但是,在调用SetVertexShader(NULL)和SetPixelShader(NULL)之后,这两个函数的内存泄漏消失了 与函数CreateAdditionalSwapChain()一起分配的IDirect3DSwapChain9对象将被释放,但不会被销毁GetBackBuffer()始终被调用,但曲面稍后会被释放。在PIX中,它们的状态“App Refs”为“0”,但它们的状态“Destruction”为“Never” 当然,IDirect3DDevice9和IDirect3D9对象会被释放,但不会被销毁

Graphics DX9内存泄漏:Release()返回0,但未调用DestroyObject 由函数FindNextValidTechnique()分配的两个IDirect3DVertexDeclaration9对象将被释放,但不会被销毁。在PIX中,状态“App Refs”为“0”,但状态“Destruction”为“从不” 由应用程序分配的IDirect3DIndexBuffer9对象将被释放,但不会被销毁。在PIX中,状态“App Refs”为“0”,但状态“Destruction”为“从不”。调用函数setIndexs(NULL)后,索引缓冲区的内存泄漏消失 由函数D3DXCreateEffect()分配的IDirect3DVertexShader9和IDirect3DPixelShader9对象将被释放,但不会被销毁。在PIX中,状态“App Refs”为“0”,但状态“Destruction”为“从不”。但是,在调用SetVertexShader(NULL)和SetPixelShader(NULL)之后,这两个函数的内存泄漏消失了 与函数CreateAdditionalSwapChain()一起分配的IDirect3DSwapChain9对象将被释放,但不会被销毁GetBackBuffer()始终被调用,但曲面稍后会被释放。在PIX中,它们的状态“App Refs”为“0”,但它们的状态“Destruction”为“Never” 当然,IDirect3DDevice9和IDirect3D9对象会被释放,但不会被销毁,graphics,memory-leaks,directx,direct3d,directx-9,Graphics,Memory Leaks,Directx,Direct3d,Directx 9,我检查了PIX和应用程序中所有对象的引用计数。他们都是0。我不知道为什么内存泄漏仍然发生。我不认为setindex(NULL)等是必要的。有人能给我一些建议吗?谢谢。尝试通过DirectX控制面板使用调试D3D DLL,打开“内存泄漏中断”,您将在调试输出中看到调用堆栈。尝试通过DirectX控制面板使用调试D3D DLL,打开“内存泄漏中断”,您将在调试输出中看到调用堆栈

我检查了PIX和应用程序中所有对象的引用计数。他们都是0。我不知道为什么内存泄漏仍然发生。我不认为
setindex(NULL)
等是必要的。有人能给我一些建议吗?谢谢。

尝试通过DirectX控制面板使用调试D3D DLL,打开“内存泄漏中断”,您将在调试输出中看到调用堆栈。

尝试通过DirectX控制面板使用调试D3D DLL,打开“内存泄漏中断”,您将在调试输出中看到调用堆栈