OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4890|回复: 4

请问申请内存的变量占堆栈空间吗?

[复制链接]

18

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-5-29
在线时间
154 小时
发表于 2021-4-7 09:19:01 | 显示全部楼层 |阅读模式
5金钱


STM32F429开发板上跑UCOS II系统,请问在子任务内用mymalloc申请了一个8192BYTE的变量,如下:
devicevalue_p2=mymalloc(SRAMIN,8192);
请问该变量在该任务切换到另外一个子任务时,是否会被移入堆栈保护起来,或者说会不会占用堆栈空间?

最佳答案

查看完整内容[请看2#楼]

你申请的是mymalloc这个接口所管理的堆空间,这个空间一旦申请就一直存在,直到free函数释放 堆栈里会保存你申请的空间的指针,就是这个指针变量devicevalue_p2,本身只有4个字节
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1013
金钱
1013
注册时间
2014-4-7
在线时间
98 小时
发表于 2021-4-7 09:19:02 | 显示全部楼层
本帖最后由 亲亻尔嘴 于 2021-4-7 09:45 编辑

你申请的是mymalloc这个接口所管理的堆空间,这个空间一旦申请就一直存在,直到free函数释放

堆栈里会保存你申请的空间的指针,就是这个指针变量devicevalue_p2,本身只有4个字节
在你没有做出成绩之前,这个世界不会在乎你的自尊。
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12995
金钱
12995
注册时间
2012-11-26
在线时间
3790 小时
发表于 2021-4-7 09:47:21 | 显示全部楼层
楼上说的对,保存的是指针变量
学无止境
回复

使用道具 举报

18

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-5-29
在线时间
154 小时
 楼主| 发表于 2021-4-7 10:05:50 | 显示全部楼层
jermy_z 发表于 2021-4-7 09:47
楼上说的对,保存的是指针变量

再请教个问题  我子任务里面初始化了很多个变量,是不是每个变量在切换任务时都会占用4个字节的地址指针啊?
回复

使用道具 举报

17

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1013
金钱
1013
注册时间
2014-4-7
在线时间
98 小时
发表于 2021-4-7 18:47:12 | 显示全部楼层
HXHNTTXLLA1121 发表于 2021-4-7 10:05
再请教个问题  我子任务里面初始化了很多个变量,是不是每个变量在切换任务时都会占用4个字节的地址指针 ...

这个得分情况去看了

在发生系统调度的这一时刻,操作系统需要保存当前子任务所执行的函数的现场,

如果无嵌套 就是当前函数内定义的局部变量

如果有则包括之前的函数的局部变量

如果局部变量为数组,这时保存的就是整个数组了。

建议楼主先弄懂  堆   栈  函数执行和跳转的原理, 以及局部变量 全局变量   
在你没有做出成绩之前,这个世界不会在乎你的自尊。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 03:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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