打印
[PIC32/SAM]

单片机堆和栈的指针是同一个吗

[复制链接]
861|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默认不使能。

使用特权

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

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

使用特权

评论回复
6
magicmcu| | 2020-3-5 10:54 | 只看该作者
xiaofei558008 发表于 2020-2-11 09:25
也就是说,我在BootLoader跳转之前要是没设置堆指针,那么在跳转之后的App里面要是跑了一个malloc和free ...

是的 堆一般情况下都是用户管理的。可以参考FreeRTOS中相关的Heap功能

使用特权

评论回复
7
usysm| | 2020-3-6 22:00 | 只看该作者
单片机上有吧      

使用特权

评论回复
8
jkl21| | 2020-3-6 22:00 | 只看该作者
数据结构的堆和栈  

使用特权

评论回复
9
wwppd| | 2020-3-6 22:01 | 只看该作者
不一样   

使用特权

评论回复
10
maqianqu| | 2020-3-6 22:03 | 只看该作者
栈不是系统自己的吗     

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

138

主题

973

帖子

13

粉丝