打印

KEIL调试一个神奇的问题

[复制链接]
1022|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jplzl|  楼主 | 2014-5-10 11:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jplzl 于 2014-5-10 11:54 编辑

SAM9X35调试一个简单的程序,发现个神奇的问题,先上个图
在一个函数里定义了个数组,如div1显示,但数组的地址却是SVC模式的栈起始地址
但看数组内容是正确的,如div2图,divs[]地址是在USR模式下的栈上,应该是正常情况
但在运行的过程又出问题了,divs[]数组的地址居然会变,而数组内容也变了,因此,程序出错了

div1.jpg (41.22 KB )

div1.jpg

div4.jpg (31.24 KB )

div4.jpg

div3.jpg (23.8 KB )

div3.jpg

div2.jpg (24 KB )

div2.jpg

相关帖子

沙发
jplzl|  楼主 | 2014-5-10 12:04 | 只看该作者
本帖最后由 jplzl 于 2014-5-10 12:06 编辑

问题的关键是,divs[]这个数组的地址变了,而不是divs[]数组的内容变了,正确的地地址0x306c44地址数据正确
内容没变,应该不是栈的问题

使用特权

评论回复
板凳
ayb_ice| | 2014-5-10 14:56 | 只看该作者
有什么奇怪的,局部变量是通过栈栈分配的

每次运行此函数时,栈是不固定的

至于出错当然是程序问题了,最有可能是指针指乱了

使用特权

评论回复
地板
jplzl|  楼主 | 2014-5-10 15:46 | 只看该作者
ayb_ice 发表于 2014-5-10 14:56
有什么奇怪的,局部变量是通过栈栈分配的

每次运行此函数时,栈是不固定的

但是程序运行一直是在这个函数里呀
并不是二次进入该程序时重新分配过的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

229

帖子

2

粉丝