在我的DirectX应用程序结束时,我得到“Direct3D设备具有非零引用计数,这意味着某些对象未被释放。”该应用程序很大,而不是我写的,我怎么去调试哪些资源没有被释放?DirectX 10资源泄漏
回答
您可以使用DirectX控制面板实用程序,如here所述。打开“Break on Memory Leaks”复选框,然后您可以使用“Break on AllocID”来查找哪些资源未被释放。
第一步是打开使用DirectX调试DLL,via the DirectX Control Panel。 (IIRC,当您安装DirectX SDK时,这些是可选项目,因此您可能需要安装它们。)
当您下次运行应用程序时,DirectX应该会提供有关泄漏的更多信息。特别是,你要寻找这样一行:
D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x1c17 to debug
allocation id ^^^^^^
或者,像这样:
Direct3D9: (WARN) :Memory Address: 00385580 lAllocID=1 dwSize=000047f8, (pid=00000474)
allocation id^
一旦你有一个分配ID,你可以告诉的DirectX时发生的分配,打破在您的程序中,通过在DirectX控制面板中设置Break on AllocID
设置(或通过设置上述注册表项)。
然后,它是检查callstack以查看涉及哪些DirectX调用的问题。
此方法适用于DX10吗?我没有看到任何警告信息 – yxk 2010-06-17 14:38:20
答案与DX10无关,仅当提问者明确要求DX10信息时才适用于DX9。 – IneQuation 2014-02-24 00:51:09
- 1. GDI资源泄漏
- 2. 检查OpenGL资源泄漏
- 3. Cppcheck:(错误)资源泄漏
- 4. 日食Java资源泄漏
- 5. Android:内存/资源泄漏
- 6. 资源泄漏问题
- 7. 资源泄漏测试
- 8. 资源泄漏在网状
- 9. 我得到资源泄漏
- 10. Java中的资源泄漏警告
- 11. 的Win32字体资源泄漏
- 12. 线程池/ WaitHandle资源泄漏/崩溃
- 13. 如何处理GDI资源泄漏
- 14. Intel C++ CreateWindow内核资源泄漏
- 15. 关于解决资源泄漏问题
- 16. MFC中的资源泄漏SendMessage()
- 17. DrawFrameControl中的GDI资源泄漏
- 18. WPF发现资源和内存泄漏
- 19. eclipse中的资源泄漏警告
- 20. 资源泄漏:流从未关闭
- 21. 获取HttpContext.Current.User.Identity.Name时发生资源泄漏
- 22. 这真的是资源泄漏
- 23. 如何纠正GDI资源泄漏?
- 24. 虚假资源泄漏警告?
- 25. 可以“使用”多个资源导致资源泄漏?
- 26. CGPDFDocumentRef iOS 10内存泄漏
- 27. 的DirectX架构资源
- 28. DirectX 12资源绑定
- 29. 泄漏在夫特3/10的iOS
- 30. 资源泄漏'Nommy'永远不会关闭错误
有什么办法可以使DX10工作吗? – yxk 2010-06-18 23:44:44
答案与DX10无关,仅当提问者明确要求DX10信息时才适用于DX9。 – IneQuation 2014-02-23 23:26:41