栈在内存中的分配

LiteOS中有个函数:

osTskStackInit( )函数

功能:初始化TASK的栈空间。栈顶在内存低地址位置,栈底在内存高地址位置???

ahhhh!什么以前的在Linux下编程栈不都是连续的从低地址开始分配内存空间吗。也不墨迹区区搜了一下,答案如下:

我看的LiteOS是跑在ARM M4上的,这个mcu的内存分配就是在内存中自减的形式。

内存地址:小 --------------------------------------->>大

Stack_high<<------------------------------------------Stack_low
(栈顶)---------------------------------------------------(栈底)

怎么样这么简洁的图片哈哈哈,意思呢就是,栈底从内存的高地址开始,然后栈指针(R13)sp会自减,往栈顶(低地址)方向分配。

关于栈指针这篇文章http://www.eepw.com.cn/article/201611/321963.htm不错

言归正转,因此呢栈的内存分配的方向还真不是固定的,需要具体的情况具体分析:

栈向什么方向增长取决于操作系统与CPU的组合。x86硬件直接支持的栈确实是“向下增长”的:push(入栈)指令导致sp自减一个slot,pop(出栈)指令导致sp自增一个slot。其它硬件有其它硬件的情况。(哈哈借用一大神的总结)!

推荐一篇关于内存的文章https://kb.cnblogs.com/page/66608/不错!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值