下面的程序是为了创建一个.txt文件,但是运行后却显示内存溢出... 
请各位高手看看那里错了吧小弟感激不尽... CFileDialog cFd(FALSE); 
CFile file; CString FileName; 
if (IDOK==cFd.DoModal()) 

    FileName=cFd.GetFileName(); 
    UpdateData(FALSE); 
} OnInitialUpdate(); if(file.Open(FileName,CFile::modeCreate | CFile::modeReadWrite|CFile::modeNoTruncate)) 

CString str,tempX,tempY,temp; 
for(int i=0;i <LineCount;i++) 

tempX.Format(_T("%d"),points[i].x); 
tempY.Format(_T("%d"),points[i].y); 
temp=tempX+" "+tempY+"\n"; 
str+=temp; 
} const  TCHAR*  sz  =  T2CW(str);  
int  iLen  =  _tcslen(sz);  
char *sz2=new char; WideCharToMultiByte(CP_ACP,  0,  sz,  -1,  sz2,  iLen,  NULL,  NULL); file.Seek(0,CFile::end);  
file.Write(sz2,iLen); 
file.Close(); 
delete sz2; 
}

解决方案 »

  1.   

    你的linecount有多少,不是太多了?下面这句话有问题吧
    char *sz2=new char; 
      

  2.   


    char *sz2=new char [XXX];
    ...
    delete [] sz2;
      

  3.   

    char *sz2=new char改为
    char *sz2=new char[iLen]
      

  4.   

    CFileDialog cFd(FALSE); 
    CFile file; CString FileName; 
    if (IDOK==cFd.DoModal()) 

        FileName=cFd.GetFileName(); 
        UpdateData(FALSE); 
    } OnInitialUpdate(); if(file.Open(FileName,CFile::modeCreate | CFile::modeReadWrite|CFile::modeNoTruncate)) 

    CString str,temp; 
    for(int i=0;i <LineCount;i++) 

    temp.Format(_T("%d %d\r\n"),points[i].x,points[i].y); 
    str+=temp; 
    } int  iLen  =  (str.GetLength()+1)*sizeof(TCHAR);//...char *sz2=NULL;
    #ifdef UNICODE
    sz2=new char[iLen];
    /*iLen=*/WideCharToMultiByte(CP_ACP,  0,  str,  -1,  sz2,  iLen,  NULL,  NULL); 
    #else
    sz2=(LPSTR)str;
    #endiffile.Seek(0,CFile::end);  
    file.Write(sz2,strlen(sz2)/*iLen*/); 
    file.Close();#ifdef UNICODE
    if(sz2!=NULL)

    delete[] sz2;
    sz2=NULL;
    }
    #endif 

      
      

  5.   

    既然const  TCHAR*  sz  =  T2CW(str);了
    怎么不干脆char *sz2 = T2A(str);
    但如果str过长的话,会栈溢出