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

本文详细解析了C语言中变量的存储区域,包括代码区、静态数据区、堆区和栈区的功能与区别,同时深入探讨了数据结构中的堆和栈概念,以及操作系统和单片机中堆栈的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

1.数据结构的堆和栈

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

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

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

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

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

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

 

https://blog.youkuaiyun.com/testcs_dn/article/details/48844841 介绍的不错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值