TCHAR *pBuf[10];
     for (int i=0; i < 10; i++)
          pBuf = new TCHAR[1024];   --> 出错的地方? (cannot convert from 'TCHAR *' to 'TCHAR *[10]) GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf); //假设函数是正确的
         .......
  
        for (int i=0; i < 10; i++)
    delete pBuf;
        这段代码要怎样改才正解? 谢谢.

解决方案 »

  1.   

        TCHAR *pBuf[10]; 
        for (int i=0; i < 10; i++) 
            pBuf[i] = new TCHAR[1024]; 
      

  2.   

     pBuf[i] = new TCHAR[1024];  
      

  3.   

        TCHAR *pBuf[10]; 
        for (int i=0; i < 10; i++) 
            pBuf[i] = new TCHAR[1024];  --> 出错的地方? (cannot convert from 'TCHAR *' to 'TCHAR *[10])     GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf); //假设函数是正确的 
            ....... 
      
        for (int i=0; i < 10; i++) 
            delete[] pBuf; 不过你的假设很难正确
      

  4.   

        这样删除释放行吗?
        for (int i=0; i < 10; i++) 
        {
            delete pBuf[i]; 
            free(pBuf[i]);  
        }
      

  5.   

      for (int i=0; i < 10; i++) 
        { 
            delete [] pBuf[i]; 
        }
      

  6.   

        在这种情况下;
        delete pBuf[i];  和  delete [] pBuf[i]  和 delete [] pBuf;  和  delete pBuf; 谁更合理一些?    我认为
        delete 是删除指针地址。
        free() 是把删除地址的内容清0. 有人说这是好习惯,一定程序上防止野指针(别人有可能读取已删除地址的内容).      请高手指正。
      

  7.   

    new -->delete
    new [] -->delete []malloc-->free防止野指针的话,p=NULL;就行了
    野指针就是指针指向的内存不存在了,但是指针还是指向哪个地址,如果这个时候根据指针操作内存肯定会出问题
    所以要把指针设为空,所有的指针操作前都要有这个判断
    if(p!=NULL)
    {
    操作指针
    }
      

  8.   

        TCHAR *pBuf[10]; 
        for (int i=0; i < 10; i++) 
            pBuf[i] = new TCHAR[1024];      ....... 
       
        if (pBuf[0] != NULL)
          GetOneRecordAllField(NULL, nIndex, NULL, (TCHAR**)pBuf);     ....... 
      
        for (int i=0; i < 10; i++) 
        {
            delete[] pBuf[i]; 
            pBuf[i] = NULL;
        }    ------> 谢谢楼上各位, 这样应该是正确的吧?
      

  9.   

    用stl容器管理二维数组舒服些,可以用vector等,嘿嘿