硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4686|回复: 1
收起左侧

[QQ群问题解答] 是不是使用UCOS后,所有变量都变成"全局"了(因为不会释放)? 还有几个问

[复制链接]

92

主题

76

回帖

92

积分

初级会员

积分
92
发表于 2014-4-2 11:05:12 | 显示全部楼层 |阅读模式
void task(void *pdata)
{
    char abc[10];
    ..........
    for(;;)
    {
        ........
    }
}
1,因为每个任务都是一个不会返回的函数,所以里面定义的变量(abc[10])其实外表是局部变量,实际上是无法释放.对吧?

2,当任务切换时,是不是要把任务里面用到的变量都要进入堆盏?(看邵贝贝书里面第一章例子2,有个任务建立了500字节的数组,结果相应的任务盏也少了500)

3,如果问题2正确的话,编译器会自动生成入盏指令吗?(人工似乎无法实现,因为不知道变量用了RAM地址多少,而且每个任务用的变量都不同)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2014-4-3 20:02:49 | 显示全部楼层
1. 针对这个abc数组基本是无法释放的。
2. 这个不是任务切换的时候造成入栈的,任务切换主要是保存那些寄存器。这些被消耗的堆栈估计是你函数嵌套以及函数中的局部变量占用的。
3. 你的理解是不正确的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 20:11 , Processed in 0.251738 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表