我的问题一般是关于DirectSoundBuffer8的Lock和Unlock方法的行为如何。
我有这样的事情:
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位版本中,它会崩溃。
答案 0 :(得分:1)
不,你绝对不必做delete[] bufferPtr
。你不拥有那段记忆,一旦你打电话给Unlock
,你的指针就不再有效了。