VS2005内存数据被自动修改

本文探讨了在程序中读取不同文件时遇到的问题:特定的读取顺序会导致之前读入的数据发生变化。通过分析,作者排除了堆栈大小和字节对齐等因素,并最终将问题归结于变量定义及读取顺序不一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的程序中需要读入两个文件,一个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,可能因为顺序不一致造成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值