点击按钮,产生对话框,里面用了NEW字符,但是加上delete老是出错
void CSerialDlg::OnButtonFilebrowser()
{
// TODO: Add your control notification handler code here
// LPCSTR lpszPath = "c:\\comdata";
LPCSTR lpszPath = "c:"; //默认是C盘
SetCurrentDirectory( lpszPath );
static char BASED_CODE szFilter[] = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||";
CFileDialog FileDlg( TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
szFilter );
FileDlg.m_ofn.lpstrInitialDir = lpszPath ;
GetDlgItemText(IDC_EDIT_POT,m_strPot); //保存罐地址到m_strPot中。
if( FileDlg.DoModal() ==IDOK )
{
CString strFileName = FileDlg.GetFileName( );
CString strFileExt = FileDlg.GetFileExt( ); //后缀名
CString lpstrName = FileDlg.GetPathName( );
m_strSendFilePathName=lpstrName; //显示文件名
CFile fp;
if(!(fp.Open((LPCTSTR)m_strSendFilePathName,CFile::modeRead)))
{
AfxMessageBox("Open file failed!");
return;
}
fp.SeekToEnd();
unsigned long fplength=fp.GetLength(); //得到文件长度
m_nFileLength=fplength;
char* fpBuff1;
fpBuff1=new char[fplength];
fp.SeekToBegin(); //定位到文件开始
if(fp.Read(fpBuff1,fplength)<1)
{
fp.Close();
return;
}
fp.Close();
m_strSendData.Empty();
unsigned long i;
for(i=0;i<fplength;i++) //将文本中的数据显示到文本框之中
{
m_strSendData+=*(fpBuff1++);
}
delete[] fpBuff1;
// UpdateData(FALSE);
}
UpdateData(FALSE);
}
本按钮事件,主要作用是显示一段文本到Edit控件里,因为用到了new字符,所以末尾加个delete[],但是总是出错,出那种内存不能为read的错误,或者什么内部无效堆(invalidHeap)之类搞不清的错误,去掉delete[],文本可以正常使用。但没有delete,总觉不妥,请教各位,delete[]为什么老是出错呢?谢谢.