C语言单片机栈、堆、堆栈的区别(仅供参考)

计算机C语言中各个变量的存放区域:

代码区(CODE): 存放函数代码;
静态数据区(DATA): 存放全局变量/静态变量;
堆区(HEAP): 是自由分配区,存放动态数据,malloc()申请的空间就是堆区的;
栈区(STACK): 存放临时/局部变量。

1.数据结构的堆和栈

1)栈:只能在一端进行插入和删除的操作的线性表。

2)堆:堆的物理存储结构是一维数组,逻辑存储结构是完全二叉树

2.操作系统、单片机中的栈(堆栈)和堆

堆和堆栈都是保存在RAM中的数据,堆栈也是栈,只是不同的名称,堆栈最大的作用是在函数调用和中断处理是保存数据,用于处理后还原现场,

1)堆栈:操作方式和数据结构中的栈相同,栈的空间分配是由操作系统分配的RAM空间,存放函数的静态变量,遵守先进后出的原则,只允许在栈的一端进行操作,常用的指令是push进栈和pop出栈,进栈的一端称为栈顶,另外一端则成为栈底(push和pop的操作只能在栈顶操作)。

2)堆:操作方式类似于数据结构中的链表,堆的空间则是在操作系统分配了栈的空间后,RAM中剩余的空间则可以作为堆的空间使用,由使用者动态申请分配(malloc库函数,动态申请容易产生内存碎片)

 

https://blog.csdn.net/testcs_dn/article/details/48844841 介绍的不错

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值