代码如下:
BYTE * bufNumber = (BYTE*)malloc(32);
CString strNO = "3";
bufNumber = (BYTE*)(LPCSTR)strNO;
free(bufNumber);

解决方案 »

  1.   

    使用方法不对。BYTE * bufNumber = (BYTE*)malloc(32);
    CString strNO = "3";
    memcpy(bufNumver, strNo, 2);
    free(bufNumber);
      

  2.   

    你free的是strNo的指针,这块内存不是你上面申请的内存。
      

  3.   

    代码分析如下:BYTE * bufNumber = (BYTE*)malloc(32);  // 分配空间
    CString strNO = "3";   // 栈变量
    bufNumber = (BYTE*)(LPCSTR)strNO;   // 指针bufNumber更改,malloc(32)的内存泄漏
    free(bufNumber);  // 释放一个栈变量的地址,程序将崩溃代码bufNumber = (BYTE*)(LPCSTR)strNO;应改为:
    memcpy(bufNumver, strNo.GetBuffer(), strNo.GetLength()*sizeof(TCHAR));