C数组下标越界

之前总听说C语言的各种毛病,今天算是遇到一个:数组下标越界

事情经过

两段完成不相干的代码,一段是测温度的,一段是测转速的。两段代码单独运行都没有问题,但是若运行测转速的代码,测温度的数据就会发生错误。

调试过程

一步查看,发现运行测转速之后,测温度的代码中的一个变量和一个数据的值就会发生诡异的错误

问题原因

数组下标越界

这个越界非常不明显,代码如下:
GratingPulseWidth[GratingIndex] = PuseWidth;

其中GratingIndex在其他的代码中有条件归零。万万没想到的是,这个归零条件不是总会触发,所以就发生越界了。
事实上这份程序运行很久都没出过问题,可能因为越界不一定会造成影响吧,正是因为这样才可怕!!!

经验教训

对数组进行操作,一定要进行越界判断!!!

if(GratingIndex < GRATING_AMOUNT)
    GratingPulseWidth[GratingIndex] = PuseWidth;
原文地址:https://www.cnblogs.com/WeyneChen/p/5957931.html