还是关于内存分配与释放的。。。。。来者有分,谢了~
void CVideo1::OnRecordBuf1(WPARAM wParam,LPARAM lParam)
{
//为声音的线性转换申请空间。------这是实时分配的内存。。。。。。。。
char *lpd = new char[120];
//ALAW转化为线性声音
memset(lpd,0,120);
TV_ALaw2Linear((char*)lParam,wParam,(short *)lpd);
pWaveHdr31->lpData = (LPSTR)lpd ;
pWaveHdr31->dwBufferLength = 2*wParam ;
pWaveHdr31->dwBytesRecorded = 0 ;
pWaveHdr31->dwUser = 0 ;
pWaveHdr31->dwFlags = 0;
pWaveHdr31->dwLoops = 0;
// 准备头写声卡
waveOutPrepareHeader (hWaveOut, pWaveHdr31, sizeof(WAVEHDR)) ;
waveOutWrite(hWaveOut, pWaveHdr31, sizeof(WAVEHDR)) ;
}
然后在播放完毕,会在回调函数中得到完成的消息,然后我想把lpd指向的内存给释放掉,
void CALLBACK CVideo1::waveOutProc(HWAVEOUT hwo,UINT uMsg, DWORD dwInstance,DWORD dwParam1,DWORD dwParam2)
{
if(uMsg == WOM_DONE)
{
char *p = ((PWAVEHDR)dwParam1)->lpData;
delete p;
p = NULL;
}
}
请问这样可以将用lpd申请的内存释放掉嘛,
或者该如何实现呢,
各位,请赐教?