for(int m=0;m<20;m++) 
{
   namenumb[m]=new char[8];
}
内存如何回收?    }

解决方案 »

  1.   

    for(int m=0;m<20;m++) 
    {
      delete namenumb[m];
    }
      

  2.   

    注意:
    使用 new 得来的空间,必须用 delete 来释放;
    使用 new [] 得来的空间,必须用 delete [] 来释放。
    彼此之间不能混用!

    我在1楼的方法就可以了 其余的写法是多余的
      

  3.   


    // 创建字符指针数组
    char **parr = new char*[100];   //注意这里是**parr 
    // 释放各个字符数组
    for (int i =0; i < 100; i++)
           delete [] parr[i];
    //释放字符指针数组
    delete [] parr;
      

  4.   

    for(int i=0; i<20; i++)
    {
        delete []namenumb[i];
    }
      

  5.   


    // 创建数组
    int *parr = new int[100];
    // 释放数组
    delete [] parr;
      

  6.   

    lz的namenumb貌似是指针数组,可以这样delete释放
    char* namenumb[20]; for(int i=0; i<20; i++)
    {
    namenumb[i] = new char[8];
    } // ... for(int j=0; j<20; j++)
    {
    delete[] namenumb[j];
    }
      

  7.   

    又开了一帖?我记得下午回过了
    对于new出来的数组,用delete[]释放
    for(int i=0;i<20;i++)
    {
      delete[] namenumb[i];
      namenumb[j]=NULL:
    }
      

  8.   

    for(int i=0; i<20; i++)
    {
      delete []namenumb[i];
    }
      

  9.   

    嘿,这个连续的new了20个char[8],那肯定是delete [] 20次了
    正解
      

  10.   

    在于lz没有贴完整的代码。namenumb的定义也不写。
    for(int i=0; i<20; i++)
    {
      delete []namenumb[i];
    }
      

  11.   

    支持   delete []namenumb[i];
      

  12.   

    13楼正解!
    for(int i=0;i<20;i++)
    {
      delete[] namenumb[i];
      namenumb[j]=NULL:
    }