当我在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。
Finaly Windbg会告诉您罪魁祸首。