请教高手指点一下。

解决方案 »

  1.   

    出现0xc0000005的异常,一般是非法的内存地址引用,比如引用NULL地址或者被delete的指针,还有种情况是非法引用将函数返回地址覆盖写入,导致非法引用.
    贴你的代码
      

  2.   

    BOOL CAudioPlay::Play(char *buf, UINT uSize)
    { BOOL bRet=FALSE; char* p;
    LPWAVEHDR pwh=new WAVEHDR;
    if(!pwh)
    goto RET;
    p=new char[uSize];//重新分配一块内存(在播放结束后删除)
    if(!p)
    {
    goto RET;
    } CopyMemory(p,buf,uSize);
    WAVEHDR m_pWaveHdr;
    ZeroMemory(pwh,sizeof(WAVEHDR));
    pwh->dwBufferLength=uSize;
    pwh->lpData=p; m_mmr=waveOutPrepareHeader(m_hOut,pwh,sizeof(WAVEHDR));
        if(m_mmr)
    {
    goto RET;
    }
    m_mmr=waveOutWrite(m_hOut,pwh,sizeof(WAVEHDR));
    if(m_mmr)
    {
    goto RET;
    } bRet=TRUE;
    RET:
    return bRet;
    }
    在waveOutWrite之前New ,在WOM_DONE消息中 Delete 这样做有问题吗?