当我调用“DirectSoundCreate”函数来获取“IDirectSound”指针时,但是在析构函数退出进程时我无法释放它。 像这样:
IDirectSound* m_pDirectSound;
IDirectSoundBuffer* m_pDsSoundBuffer;
HRESULT hResult = DirectSoundCreate(NULL, &m_pDirectSound,NULL );
hResult =
m_pDirectSound->SetCooperativeLevel
(hWnd,DSSCL_NORMAL|DSSCL_EXCLUSIVE|DSSCL_PRIORITY);
此处发布:
if(m_pDirectSound)
{
m_pDirectSound->Release();
}
程序将永远阻止在这里!
所以任何人都可以帮助我?我应该释放指针m_pDirectSound
吗?非常感谢!
答案 0 :(得分:2)
有时内存泄漏可能会导致这种情况。 你应该检查你的程序是否有任何内存问题。
您的代码不安全。
IDirectSound* m_pDirectSound = NULL;
IDirectSoundBuffer* m_pDsSoundBuffer = NULL;
HRESULT hResult = DirectSoundCreate(NULL, &m_pDirectSound,NULL );
hResult =
m_pDirectSound->SetCooperativeLevel
(hWnd,DSSCL_NORMAL|DSSCL_EXCLUSIVE|DSSCL_PRIORITY);
if(FAILED(hResult)) return ;
//if not at the constructor you should type 'return hResult'
您可以访问此网站并下载示例。 http://www.rastertek.com/dx11tut14.html
我从中学习dx11。
:)
答案 1 :(得分:1)
确保您没有过早致电CoUninitialize()
。如果在卸载COM时仍有COM对象处于活动状态,则之后调用Release()
可能会出现各种未定义的行为,包括崩溃和死锁。