UCOSII

[复制链接]
 楼主| 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 | 显示全部楼层
局部变量保存在堆中而不是栈中??
黄小俊 发表于 2013-12-14 15:46 | 显示全部楼层
局部变量保存在堆中而不是栈中??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

137

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

8

主题

137

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部