点击按钮,产生对话框,里面用了NEW字符,但是加上delete老是出错

arm7tdmi 2012-03-19 03:53:21
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[]为什么老是出错呢?谢谢.
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
arm7tdmi 2012-03-19
  • 打赏
  • 举报
回复
哦也,可以了哦。
arm7tdmi 2012-03-19
  • 打赏
  • 举报
回复
m_strSendData+=*(fpBuff1++);
这句应该是fpBuff1把自身的值赋给了m_strSendData.
貌似没有改变内容呀。

假如改了,如何使用delete[]呢?
lirg8405 2012-03-19
  • 打赏
  • 举报
回复
for(i=0;i<fplength;i++) //将文本中的数据显示到文本框之中
{
m_strSendData+=*(fpBuff1++);
}

char *pTemp = fpBuff1;
for(i=0;i<fplength;i++) //将文本中的数据显示到文本框之中
{
m_strSendData+=*(pTemp++);
}
mayudong1 2012-03-19
  • 打赏
  • 举报
回复
m_strSendData+=*(fpBuff1++);

这一句对指针做了操作,最后delete的时候已经不是原来的值了

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧