日历狗
万年历

堆栈

2021/9/26 13:18:11
万年历日历:堆栈知识
堆栈知识
堆栈的区别

“堆”和“栈”史计算机领域不容忽视的两个重要概念。学习计算机课程的人,一定会接触到这两个概念。堆栈是一种数据结构,同时也是两个不同的方面。关于“堆”和“栈”到底有什么区别呢?和小编一起来看看吧!

堆栈的区别

堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。

所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。

1、空间分配不同:栈由操作系统自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

堆(操作系统)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

2、缓存方式不同:栈使用的是一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放。

而堆是存放在二级缓存中,生命周期由虚拟机的回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以,调用这些对象的速度要相对来得低一些。

3、数据结构不同:堆可以被看成是一棵树,如堆排序;栈是一种先进后出的数据结构。