DXUT 怎样释放类中的COM对象该?
我想把某些网格体、效果、纹理封装在一个类CObject中,头文件中是这样定义这个类的:
class CObject
{
public:
CObject ();
~CObject () ;
void OnCreateDevice() ;
HRESULT OnRender( LPDIRECT3DDEVICE9 pDevice) ;
void OnLostDevice() ;
void OnResetDevice() ;
void OnDestroyDevice() ;
private:
LPD3DXMESH m_pMesh ;
LPDIRECT3DTEXTURE9 m_pTexture ;
LPD3DXEFFECT m_pEffect;
};
/////////////////////////////////////////////////////////////////////
.cpp文件大体是这样的:
CObject::CObject()
{
}
CObject::~CObject()
{
}
void CObject::OnCreateDevice()
{
//创建网格、纹理、效果接口的引用
}
HRESULT CObject::OnRender( LPDIRECT3DDEVICE9 pDevice)
{
//使用效果和纹理接口渲染网格体对象
}
void CObject::OnResetDevice()
{
//
}
void CObject::OnLostDevice()
{
//
}
void CObject::OnDestroyDevice()
{
SAFE_RELEASE(m_pTexture);
SAFE_RELEASE(m_pEffect);
SAFE_RELEASE(m_pMesh);
}
程序运行时一切正常,但关闭以后,总提示有内存未被释放。大体是这样的提示:
D3DX: MEMORY LEAKS DETECTED: 12 allocations unfreed (131440 bytes)
到底该怎样释放这些内存?析构函数中删除它们也不行,提示依旧。
请过往大侠们指点一下,谢谢!