afx_msg long  MyDlg::OnRecvData(WPARAM wParam,LPARAM lParam){ CString strRecv = L""; //串口接收到的BUF BYTE *pBuf = (BYTE*)wParam; //串口接收到的BUF长度 DWORD dwBufLen = lParam; CString temp;    for(int i=0;i<lParam;i++)    {    temp.Format(L"%02x",pBuf[i]);    strRecv+=temp;    }    //将新接收到的文本添加到接收框中 m_table.InsertItem(0,strRecv); //释放内存 delete[] pBuf; pBuf = NULL; return 0;}

解决方案 »

  1.   

    pBuf并没有申请新自己的空间,所以最后不需要释放
      

  2.   

    http://blog.csdn.net/echojiangyq_fight/article/details/18045867
      

  3.   

    主要看
    BYTE *pBuf = (BYTE*)wParam;
    这个wParam的来历,如果是在另外的地方new出来的,而且标明要在这里删除,那代码是没错的,如果不是new出来的,或者是删除在其它地方,那这里的代码就有问题了,最后的
    delete[] pBuf;
    pBuf = NULL;
    两行不要
      

  4.   

    坚持谁创建,谁释放的原则:
    pBuf最后不需要 delete [];
    看(BYTE*)wParam 是如何来的,并且再那里进行内存的管理。