本帖最后由 OneRain 于 2018-6-18 13:18 编辑
很久没有搞51内核的MCU了,发现程序的局域变量数据经常被改的莫名奇妙。。。函数级数在4-5级,不是太深,但是好像经常表现出溢出导致局域变量数据被改。。。
见图:
QQ截图20180617152836.png (27.22 KB, 下载次数: 0)
下载附件
2018-6-17 15:29 上传
,函数1退出后,函数2的局域变量数据全部被修改的不成样子。。。
Program Size: data=74.1 xdata=207 const=1351 code=13749,我程序占有量发现data变量留的足够有啊。。。。求那个大神告知原因啊!!!
修改原因:添加具体错误原因,好让以后有人遇到这种错误的人,搜索到关键字的搜索到这个解决贴!!!
typedef mic_bool_def (*aaa_def)(uint8_t reg, uint8_t amount, uint8_t *pd);
定义了一个函数指针类型,然后,用这个类型起了个变量
aaa_def bbb;
一个实现函数是:
mic_bool_def ccc(uint8_t reg, uint8_t amount, uint8_t *pd);
现在的情况是:
bbb = ccc;
然后执行bbb(参数),就出现上面的问题,但是直接执行ccc(参数),完全OJBK。。。。问题来,各位怎么看这个问题。。。
一周热门 更多>