Direct3D9调用Release时出现异常

时间:2016-07-04 03:16:36

标签: c++ com directx direct3d direct3d9

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

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

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

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

在界面的创建和发布之间,我能够正常使用它。

这是我第一次遇到这样的事情而且我完全没有出错的线索。这可能是我的DirectX安装的一个问题,但我有其他软件使用Direct3D9运行没有任何问题。

1 个答案:

答案 0 :(得分:1)

您似乎已经附上了#34; Application Verifier"到你的EXE。 Appverif检查内存泄漏,发现了一个。如果您读取完整输出,appverif会为您提供泄漏分配的堆栈跟踪。您可以通过使用WinDbg调试EXE来显示它并运行命令dps STACKTRACE_ADDRES。 内存泄漏可能来自您的//do some work...代码,也许您忘记发布引用的d3d对象。还有一种情况是,图形驱动程序会导致appverif检测到内存泄漏,在这种情况下只需从appverif中删除您的EXE。 Finaly Windbg会告诉你罪魁祸首。