【发布时间】:2016-07-04 03:16:35
【问题描述】:
当我在 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 的软件运行没有任何问题。
【问题讨论】:
-
您在此对象上调用 AddRef 而不是 Release。
-
@immibis 感谢您的回复,但是,我尝试在创建 D3D9 对象后立即释放它,但遇到了同样的问题。另外,这是我的应用程序处理 Direct3D 的唯一部分。
-
您使用的是什么操作系统?你在使用 Debug Developer Runtime 吗?
标签: c++ com directx direct3d direct3d9