首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DX9内存泄漏: return ()返回0,但没有调用DestroyObject

DX9内存泄漏: return ()返回0,但没有调用DestroyObject
EN

Stack Overflow用户
提问于 2012-09-12 03:07:14
回答 1查看 691关注 0票数 2
  1. 由函数IDirect3DVertexDeclaration9分配的两个FindNextValidTechnique()对象被释放,但没有被销毁。在PIX中,"App“的状态是"0",而”破坏“的状态是”从不“。
  2. 应用程序分配的IDirect3DIndexBuffer9对象将被释放,但不会被销毁。在PIX中,"App“的状态是"0",而”破坏“的状态是”从不“。调用函数SetIndices(NULL)后,索引缓冲区的内存泄漏就消失了。
  3. 一个IDirect3DVertexShader9和一个由函数D3DXCreateEffect()分配的IDirect3DPixelShader9对象会被释放,但不会被销毁。在PIX中,"App“的状态是"0",而”破坏“的状态是”从不“。但是,在我调用SetVertexShader(NULL)SetPixelShader(NULL)之后,两者的内存泄漏就消失了。
  4. 与函数IDirect3DSwapChain9一起分配的CreateAdditionalSwapChain()对象将被释放,但不会被销毁。GetBackBuffer()曾经被调用过,但是Surface将会在稍后发布。在PIX中,它们的状态"App“是"0",但它们的状态”破坏“是”从不“。
  5. 当然,IDirect3DDevice9IDirect3D9对象会被释放,但不会被销毁。

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

EN

回答 1

Stack Overflow用户

发布于 2012-09-21 21:49:22

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12380685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档