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