2014-11-06 22 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;으로 OK를 실행하지만 64 비트 빌드에서는 충돌합니다.

누군가 나를 밝힐 수 있기를 바랍니다. 미리 감사드립니다!

답변

1

아니요, 당신은 절대적으로 delete[] bufferPtr을 할 필요가 없습니다. 그 기억을 소유하고 있지 않다면, Unlock이라고 불렀다면 포인터는 더 이상 유효하지 않습니다.