DirectSoundBuffer8 ::锁定/解锁

时间:2014-11-06 06:07:19

标签: c++ winapi mingw32 mingw-w64 directsound

我的问题一般是关于DirectSoundBuffer8的LockUnlock方法的行为如何。

我有这样的事情:

unsigned char *bufferPtr;

result = ((IDirectSoundBuffer8*)dsb)->Lock(0,size,(void**)&bufferPtr,(DWORD*)&size, NULL, 0, 0);
if(FAILED(result)) {
    return;
}
memcpy(bufferPtr, waveData, size);
result = ((IDirectSoundBuffer8*)dsb)->Unlock((void*)bufferPtr, size, NULL, 0);
if(FAILED(result)) {
    return;
}
delete[] bufferPtr;

即使不是delete[] bufferPtr;,我还是必须new吗?

我使用mingw编译我的程序。 32位运行与delete[] bufferPtr;运行正常,但在64位版本中,它会崩溃。

希望有人能够启发我。提前谢谢!

1 个答案:

答案 0 :(得分:1)

不,你绝对不必做delete[] bufferPtr。你不拥有那段记忆,一旦你打电话给Unlock,你的指针就不再有效了。