我的程序中需要读入两个文件,一个outcode.txt,一个是Lq.txt。系统读取outcode后,outcode的值显示正常,但当读取了Lq后,outcode的前两个值被更改为其他数值。
于是,把outcode.txt和Lq.txt的读取顺序反过来,outcode数据正常了,不会被修改了。
分析这种现象的产生原因:
(1)堆栈不够。这个可能性很小,因为outcode和Lq都存入静态存储点,不关堆栈什么事,但是还是把堆栈修改为1000B,上述现象仍然存在。
(2)字节对齐问题。在DSP软件中对字节对齐很讲究,一般存储单元的第一个地址应该是8的倍数,所以这里我也加了一个控制语句:#pragma pack(8),修改后也没用。
(3)我在定义Lq存储单元和outcode存储单元时,定义顺序是Lq、outcode,读文件的的时候是先读的outcode,后读的Lq,可能因为顺序不一致造成的。