急!急!急!高分求解!!!串口与内存问题!!

flyjalor 2005-01-26 12:45:24
各位大虾好!
在下遇到一个很奇怪问题:在串口收数据时(用的是微软的MSCOMM控件,在WINDOWS的VC++6.0环境下):内存不停的在增长.代码如下:
1.串口设置:
  m_Comm2.SetCommPort(2); //选择COM2
m_Comm2.SetInBufferSize(1024); //设置输入缓冲区的大小,Bytes
m_Comm2.SetOutBufferSize(512); //设置输入缓冲区的大小,Bytes
if(!m_Comm2.GetPortOpen()) //打开串口
m_Comm2.SetPortOpen(TRUE);
m_Comm2.SetInputMode(1); //设置输入方式为二进制方式
m_Comm2.SetSettings(commset2); //设置波特率等参数
m_Comm2.SetRThreshold(1); //为1表示有一个字符引发一个事件    
m_Comm2.SetInputLen(0);
2.收数据:
 VARIANT m_input;
char *str,*str1;
int k,nEvent,i;
CString str2,m_RcvData;
nEvent=m_Comm.GetCommEvent();
switch(nEvent)
{
case 2:
k=m_Comm.GetInBufferCount(); //接收缓冲区的字符数目
if(k>0)
{
m_input=m_Comm.GetInput();
str=(char*)(unsigned char*)m_input.parray->pvData[1];
}
i=0;
str1=str;
while(i<k)
{
i++;
str1++;
}

    str2=(const char*)str; //清除字符串中的不必要字符
 }
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyxie 2005-01-26
  • 打赏
  • 举报
回复
switch(nEvent)
{
case 2:
k=m_Comm.GetInBufferCount(); //接收缓冲区的字符数目
if(k>0)
{
m_input=m_Comm.GetInput();
str=(char*)(unsigned char*)m_input.parray->pvData[1];
}
i=0;
str1=str;
while(i<k)
{
i++;
str1++;
}

    str2=(const char*)str; //清除字符串中的不必要字符

//处理完接收的字符之后添加这句:
::VariantClear(&m_input);
 }
flyjalor 2005-01-26
  • 打赏
  • 举报
回复
hehe,谢谢大家
也不行,在别人机器上没有问题
在我机器上不行,也杀毒了,没有发现病毒
netlib 2005-01-26
  • 打赏
  • 举报
回复
接收一次删除一下保存数据的指针试试
delete []str;
flyjalor 2005-01-26
  • 打赏
  • 举报
回复
谢谢GDY119
不是这个;原因,把这行去掉也不行!
gdy119 2005-01-26
  • 打赏
  • 举报
回复
str2=(const char*)str; //清除字符串中的不必要字符
//=================================================

指针操作问题

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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