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

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);//删除数组中的数
}


}

程序运行一两个小时后,发现记录的文件里,有好几个两帧数据是一模一样的,同时还丢掉了下一帧数据,请问我这程序存在什么问题?
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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是成员变量还是局部变量???

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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