串口通信中的内存溢出问题,急!急!急!
我采用MSComm控件实现串口通信,其OnComm响应函数如下:
void CTestView::OnOnCommMscomm1()
{
switch(m_Com.GetCommEvent())
{
case 1:
break;
case 2:
GetCommData();
UpdateData(FALSE);
break;
default:
AfxMessageBox(m_Com.GetCommEvent());
m_Com.SetInBufferCount(0);
m_Com.SetOutBufferCount(0);
break;
}
}
void CTestView::GetCommData()
{
CString strTemp;
LONG len,j;
BYTE rxdata[2048]={0};
VARIANT variant_inp;
COleSafeArray safearray_inp;
CString m_strForAngle;
variant_inp=m_Com.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for (j=0;j<len;j++)
{
safearray_inp.GetElement(&j,rxdata+j);
BYTE bt=*(char*)(rxdata+j);
strTemp.Format("%02X",bt); //16 hex
if (strTemp=="AA")
{
DrawMeter(m_strForAngle);
m_strForAngle="";
}
m_strForAngle+=strTemp;
}
VariantClear(&variant_inp);//此处释放内存,加了之后好了一点。
}
其中,DrawMeter(CString strForAngle)是一绘制界面函数,DrawMeter()里面还有函数调用,不知道还要不要贴出来。
串口一直在发数据,但上面程序运行一段时间之后就内存泄露。请大侠们看看,哪里出问题了。
万分感谢!