关于ARM7内存溢出的奇怪现象
时间:10-02
整理:3721RD
点击:
LPC2368的有32K的空间来存放程序中的变量,我把程序所用的某个数组减小程序会出问题,变大就没问题(前提是没有超出32K),还有一种情况就是我把一些不需要的变量注释掉程序会出问题,打开注释就没问题了,大家能不能给点思路呀?
有可能和设置的堆栈空间有关系 建议不使用lpc2368 升级到lpc1768
你应该说一下会出啥问题,是程序跑飞?还是数据被破坏?
数组减小出问题,增加后不出问题,出现的问题我判断是数据被破坏;
具体原因应该是你的数组处于其他被误操作的数据的前部,后面数据在操作时存在的地址计算错误,而将实际操作实施在你定义的数组上;因为后面的数据紧接着你定义的数组尾部,所以出错的位置定位也相当于基于数组尾部计算;
将数组容量增加后,后面数据的错误操作还是局限于固定范围,但是此时落在你不使用的数组后部,所以不会对程序造成影响;减小数组容量,就将这个固定范围往前移,会和你使用的数组区域重叠,导致问题产生;
至于为什么取消一些变量为什么会出问题:你没有使用的变量,不能说明整个程序的其他部分没有使用,比如系统初始化,系统标志等等;除非整个工程项目里面所有的代码都是你一个人编写的,你才能如问题中这样说