打印

UCOSII

[复制链接]
1720|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
beill|  楼主 | 2013-12-14 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在KEIL平台上编译UC/OS我有这样的一个困惑,我发现任务堆栈里保存的仅仅是CPU寄存器的状态和一些函数嵌套时的PC值还有就是函数嵌套时的一些传递参数的值,但是他并没有保存函数中的局部变量,这样的话,当有一个任务正在调用一个函数的时候,切换到了另外的一个任务,而这个任务也调用了这个函数,也就是说这个函数的局部变量被从新赋值改变了,那么当回到原来的任务时,这时候不就会出现了运行错误,这样的话系统不是会很不稳定。
    请教一下,在KEIL编译器中有预防这种状况的机制吗?还是UC/OS本省有预防的机制,不然系统不是随时都有可能出错,请高手指教啊。。。。。。

相关帖子

沙发
dirtwillfly| | 2013-12-14 12:49 | 只看该作者
我是这样理解的:局部变量只能由声明它的函数或块中访问,它们的生命周期和程序相同。程序执行完毕,局部变量占用的存储空间会被释放。即使没执行完毕,另一个任务又调用这个函数,也会另外重新分配存储空间。

使用特权

评论回复
板凳
tyw| | 2013-12-14 14:58 | 只看该作者
地板
黄小俊| | 2013-12-14 15:46 | 只看该作者
局部变量保存在堆中而不是栈中??

使用特权

评论回复
5
黄小俊| | 2013-12-14 15:46 | 只看该作者
局部变量保存在堆中而不是栈中??

使用特权

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

本版积分规则

8

主题

137

帖子

2

粉丝