请各位大侠帮帮我!CString *pStr;
ptrtest()
{
   INT i=0;
   for(i=0;i<10;i++)
  {
      CString *pStr=new CString;//<------------|
      *pStr="ttttttt";          //             |
  }                             //             |
  delete pStr;//<------请问这样就可以释放刚才用new 分配的空间吗?
}

解决方案 »

  1.   

    不可以。
    由于你new的pStr在for语句块内部,而使用delete的pStr在语句块外部,所以这两个pStr不是同一个。
    另外,你做了10次循环,动态申请了10次内存,所以如果你要delete的话,必须保证能够全部释放,否则会有内存泄露。
      

  2.   

    你看看你new了多少次了??
    delete有多少次了?
    你分配了10次,但只有最后一次释放了
      

  3.   

    CString *pStr;
    ptrtest()
    {
       INT i=0;
       for(i=0;i<10;i++)
      {
          CString *pStr=new CString;//<------------|
          *pStr="ttttttt";          //             |
          delete pStr;//<------放在這裡才行  }                             //             |
      
    }