在我的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