C++ builder 串口API内存占用问题
使用Timer对串口进行不断的读取,没有进行其他的操作,发现程序所占用的内存会以一个很慢的速度的增加。相关的API函数,ClearCommError会造成内存的不停消耗?
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cs;
ClearCommError(hComm,&dwError,&cs);
if(cs.cbInQue>sizeof(inbuff))
{
PurgeComm(hComm,PURGE_RXCLEAR);
return;
}
ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
inbuff[cs.cbInQue]='\0';
}
unit1.h的private中声明了char inbuff[1024]
串口?API?内存
[解决办法]
根据你描述的情况看,问题可能出在那条 COMSTAT cs 声明:函数结束时没有自动释放。你不妨把它屏蔽掉试试。
另外,用定时器监控串口输入似有不妥,不如用线程。
[解决办法]
一般是数组被使用的缘故,好像声明的时候其实内存是不分配的,访问的时候才分配。