[32位单片机及处理器] 单片机堆和栈的指针是同一个吗

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

小弟不胜感激!
谢谢。

使用特权

评论回复
| 2020-2-5 10:35 | 显示全部楼层
只知道栈,也听说过堆栈,没听说过单独的堆。

使用特权

评论回复
 楼主 | 2020-2-5 15:15 | 显示全部楼层
hu9jj 发表于 2020-2-5 10:35
只知道栈,也听说过堆栈,没听说过单独的堆。

是啊,我也是这么疑惑的,感觉没地方可以讲的清楚;

使用特权

评论回复
| 2020-2-10 11:39 | 显示全部楼层
建议你可以去看一下CPU相关的理论熟悉一下。常说的栈指STACK,是CPU执行代码的时候必须的,用来存放返回函数地址,存放调度函数返回值,存放函数内部临时变量等等。堆是指HEAP,比较常见就是malloc free函数使用的内存池。堆是需要专门的算法管理的,一般MCU默认不使能。

使用特权

评论回复
 楼主 | 2020-2-11 09:25 | 显示全部楼层
magicmcu 发表于 2020-2-10 11:39
建议你可以去看一下CPU相关的理论熟悉一下。常说的栈指STACK,是CPU执行代码的时候必须的,用来存放返回函 ...

也就是说,我在BootLoader跳转之前要是没设置堆指针,那么在跳转之后的App里面要是跑了一个malloc和free,那么程序还是有可能出错的对吧?

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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