gpt4 book ai didi

c++ - 调用 Release 时出现 Direct3D9 异常

转载 作者:行者123 更新时间:2023-11-30 05:25:33 26 4
gpt4 key购买 nike

当我在 Direct3D9 接口(interface)上调用 Release() 时,程序立即停止,在调试器下,我得到以下输出:

VERIFIER STOP 00000900: pid 0x570: A heap allocation was leaked.  

在我的代码中,我以这种方式创建和释放 D3D9 接口(interface):

IDirect3D9 *pD3D = Direct3DCreate9( D3D_SDK_VERSION );
// Do some work...
pD3D->Release();
pD3D = nullptr;

在接口(interface)创建和释放之间,我可以正常使用它。

这是我第一次遇到这样的事情,我完全不知道哪里出了问题。这可能是我的 DirectX 安装有问题,但我有其他使用 Direct3D9 的软件在运行时没有任何问题。

最佳答案

您似乎将“应用程序验证程序”附加到您的 EXE。 Appverif 检查内存泄漏并发现了一个。如果您阅读了完整的输出,appverif 会为您提供泄漏分配的堆栈跟踪。您可以通过使用 WinDbg 调试 EXE 并运行命令 dps STACKTRACE_ADDRES 来显示它。内存泄漏可能来自您的 //do some work... 代码,也许您忘记释放引用的 d3d 对象。图形驱动程序也会导致 appverif 检测到内存泄漏,在这种情况下,只需从 appverif 中删除您的 EXE。最后 Windbg 会告诉您罪魁祸首。

关于c++ - 调用 Release 时出现 Direct3D9 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38176484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com