描述:
mscomm控件接收数据多行显示,在显示过程中内存增大,代码如下;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
myVar.Attach(m_ctrlComm.GetInput());
safearray_inp = myVar; //COleVariant型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //验证得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
if(rxdata[0]==5&&rxdata[2]==82&&rxdata[3]==4)
{
y.redata[0]=rxdata[4];
y.redata[1]=rxdata[5];
y.redata[2]=rxdata[6];
y.redata[3]=rxdata[7];
fdata=y.f_data;
strtemp.Format("%0.2f m\r\n",fdata);
/***************编辑框中显示结果*********************************************/
m_recive+=strtemp; // 加入接收编辑框对应字符串
UpdateData(FALSE); //更新编辑框内容 OR SetDlgItemText(IDC_EDIT_RXDATA,m_strRXData);
p->LineScroll(p->GetLineCount());//滚动条置底
m_recive+=strtemp; 就是执行了这句后内存一直增大,不知道什么原因,请高手帮忙分析下怎么解决!
解决方案1:
sory :m_recive.Left(1024);应该是Right,保留后来的