2014-11-06 58 views
1

我的問題一般是關於如何使用DirectSoundBuffer8的方法如LockUnlock的行爲。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位版本中,它崩潰。

希望有人能啓發我。提前致謝!

回答

1

不,你絕對不需要做delete[] bufferPtr。你不擁有這樣的內存,一旦你叫Unlock你的指針甚至不再有效。