我在函数中定义:
    LPTSTR lpstrName = new char;
    _bstr_t p_Sql;
    p_Sql = e_Recordset->GetCollect("fcode").bstrVal;
    lpstrName = p_Sql; 
    SetWindowText(hCode, lpstrName);
    p_Sql = e_Recordset->GetCollect("fName").bstrVal;
    lpstrName = p_Sql; 
    SetWindowText(hName, lpstrName);
    delete lpstrName;   //这里就错了,是为什么???
  
如果不delete会不会浪费内存,书上不是说做了‘new’操作后,要用‘delete’释放吗?

解决方案 »

  1.   

    LPTSTR是char*
    你这里LPTSTR lpstrName = new char;分配了内存
    可是在lpstrName = p_Sql;你又对这个指针赋值,这样在最后delete当然出错啦
    把lpstrName = p_Sql;这句改为如下*lpstrName = p_Sql;不要去改变lpstrName的地址,不然这样的话会出现内存遗漏。最好把lpstrName的声明改为如下:char* const lpstrName = new char;这样就可以避免意外的修改了lpstrName的地址
      

  2.   

    哦~~~
        感谢‘guoxiny(狼)’,你说的‘char* const lpstrName ’我一下反映过来了。以前老是遇到这样的问题!看来我对C++还没做到灵活运用。真要好好学习才是