数组被消灭了

时间:2010-08-23 15:56:58

标签: c arrays

我遇到了将命令写入命令​​缓冲区的情况。当命令缓冲区中的命令被执行时,该命令被处理并从UART发送到另一个子系统。处理命令时,需要从UART发送的数据存储在队列中,并引发标志。然后在我的主while循环检查以查看是否已经引发该标志之后不久,如果是,则将数据发送出UART。但是,在处理命令的时间和准备发送UART的时间之间,阵列被破坏。我知道这是因为我正在使用在线调试器并设置断点。世界上到底发生了什么,我该如何解决这个问题?

这是发生的事情的一个例子:

在队列中处理和存储之后(a[]是队列):

a[0] = 0x3;
a[1] = 0x6;
a[2] = 0x9;

在它准备好发送UART之前:

a[0] = 0x3;
a[1] = 0x6;
a[2] = 0x0;

或有时甚至,

a[0] = 0x3;
a[1] = 0x0;
a[2] = 0x0;

行为是随机的。有时只有一个字节被破坏,有时只有两个字节。

2 个答案:

答案 0 :(得分:0)

在字节上设置监视。这样,当有人写入调试器时,调试器就会停止。

答案 1 :(得分:0)

听起来像记忆涂鸦。那里的其他东西意外地访问了你的阵列的内存。这可能是由于指向释放内存的指针未设置为NULL或可能是某些硬件写入同一内​​存。没有更多信息就不可能说。