这段程序,用动态数组会存在什么问题,请大侠帮忙

zghanhailiang 2009-07-30 10:10:36
我在做数据录取程序时,用动态数组出现了问题,请大侠帮忙解决:
我在串口接收线程,用动态数组加入数据:
void CntIrq()
{
nLength = SIO_READ(Buffer[100]);//串口读取数据
....
CarrayData.Add(Buffer)//将数据加入到动态数组中

}

void OnIdle()//在空闲时间函数中,用处理动态记录文件
{
int arraySize = CarrayData.GetSize();
for(int i=0;i<arraySize;i++)
{
....

CarrayData.RemoveAt(0);//删除数组中的数
}


}

程序运行一两个小时后,发现记录的文件里,有好几个两帧数据是一模一样的,同时还丢掉了下一帧数据,请问我这程序存在什么问题?
...全文
50 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendao0563 2009-07-31
[Quote=引用楼主 zghanhailiang 的回复:]
我在做数据录取程序时,用动态数组出现了问题,请大侠帮忙解决:
我在串口接收线程,用动态数组加入数据:
void CntIrq()
{
  nLength = SIO_READ(Buffer[100]);//串口读取数据
  ....
  CarrayData.Add(Buffer)//将数据加入到动态数组中

}

void OnIdle()//在空闲时间函数中,用处理动态记录文件
{
  int arraySize = CarrayData.GetSize();
  for(int i=0;i <arraySize;i++)
  {
  ....
 
  CarrayData.RemoveAt(0);//删除数组中的数
  }


}

程序运行一两个小时后,发现记录的文件里,有好几个两帧数据是一模一样的,同时还丢掉了下一帧数据,请问我这程序存在什么问题?
[/Quote]

如果 是两个线程需要加锁。否则可能出现各种情况。
回复
jyh_baoding 2009-07-31
最好用 NEW
回复
zyq5945 2009-07-30
[Quote=引用 1 楼 happyparrot 的回复:]
SIO_READ(Buffer[100]);
==这里的Buffer是成员变量还是局部变量???
[/Quote]
Buffer[100]这么大的字符数组,应该是用CStringArray。
随便问下CStringArray也要分配吗?!CString有自己的内存管理机制
回复
快乐鹦鹉 2009-07-30
SIO_READ(Buffer[100]);
==这里的Buffer是成员变量还是局部变量???
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告