IDirect3DVertexDeclaration9分配的两个FindNextValidTechnique()对象被释放,但没有被销毁。在PIX中,"App“的状态是"0",而”破坏“的状态是”从不“。IDirect3DIndexBuffer9对象将被释放,但不会被销毁。在PIX中,"App“的状态是"0",而”破坏“的状态是”从不“。调用函数SetIndices(NULL)后,索引缓冲区的内存泄漏就消失了。IDirect3DVertexShader9和一个由函数D3DXCreateEffect()分配的IDirect3DPixelShader9对象会被释放,但不会被销毁。在PIX中,"App“的状态是"0",而”破坏“的状态是”从不“。但是,在我调用SetVertexShader(NULL)和SetPixelShader(NULL)之后,两者的内存泄漏就消失了。IDirect3DSwapChain9一起分配的CreateAdditionalSwapChain()对象将被释放,但不会被销毁。GetBackBuffer()曾经被调用过,但是Surface将会在稍后发布。在PIX中,它们的状态"App“是"0",但它们的状态”破坏“是”从不“。IDirect3DDevice9和IDirect3D9对象会被释放,但不会被销毁。我检查了PIX和应用程序中所有对象的引用计数。他们都是0。我不知道为什么内存泄漏还会发生。我不认为SetIndices(NULL)等是必要的。有人能给我点建议吗?谢谢。
发布于 2012-09-21 21:49:22
尝试使用调试D3D DLL的通过DirectX控制面板,打开“中断内存泄漏”,您将看到调用堆栈的调试输出。
https://stackoverflow.com/questions/12380685
复制相似问题