[PIC32/SAM] 单片机堆和栈的指针是同一个吗

[复制链接]
1097|9
 楼主| xiaofei558008 发表于 2020-2-5 09:31 | 显示全部楼层 |阅读模式
现在在做STM32的一个OTA,只看到了从bootloader跳转程序到app之前要重新设置栈指针,但是没看到堆指针的设置,难道是不需要?还是压根就是一个东西,或者压根就没有用堆指针??
请大牛帮忙解答一下下。

小弟不胜感激!
谢谢。
hu9jj 发表于 2020-2-5 10:35 | 显示全部楼层
只知道栈,也听说过堆栈,没听说过单独的堆。
 楼主| xiaofei558008 发表于 2020-2-5 15:15 | 显示全部楼层
hu9jj 发表于 2020-2-5 10:35
只知道栈,也听说过堆栈,没听说过单独的堆。

是啊,我也是这么疑惑的,感觉没地方可以讲的清楚;
magicmcu 发表于 2020-2-10 11:39 | 显示全部楼层
建议你可以去看一下CPU相关的理论熟悉一下。常说的栈指STACK,是CPU执行代码的时候必须的,用来存放返回函数地址,存放调度函数返回值,存放函数内部临时变量等等。堆是指HEAP,比较常见就是malloc free函数使用的内存池。堆是需要专门的算法管理的,一般MCU默认不使能。
 楼主| xiaofei558008 发表于 2020-2-11 09:25 | 显示全部楼层
magicmcu 发表于 2020-2-10 11:39
建议你可以去看一下CPU相关的理论熟悉一下。常说的栈指STACK,是CPU执行代码的时候必须的,用来存放返回函 ...

也就是说,我在BootLoader跳转之前要是没设置堆指针,那么在跳转之后的App里面要是跑了一个malloc和free,那么程序还是有可能出错的对吧?
magicmcu 发表于 2020-3-5 10:54 | 显示全部楼层
xiaofei558008 发表于 2020-2-11 09:25
也就是说,我在BootLoader跳转之前要是没设置堆指针,那么在跳转之后的App里面要是跑了一个malloc和free ...

是的 堆一般情况下都是用户管理的。可以参考FreeRTOS中相关的Heap功能
usysm 发表于 2020-3-6 22:00 | 显示全部楼层
单片机上有吧      
jkl21 发表于 2020-3-6 22:00 | 显示全部楼层
数据结构的堆和栈  
wwppd 发表于 2020-3-6 22:01 | 显示全部楼层
不一样   
maqianqu 发表于 2020-3-6 22:03 | 显示全部楼层
栈不是系统自己的吗     
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

997

帖子

13

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