天气网提供全国国内城市天气预报,旅游景点天气预报,国际城市天气预报以及历史天气预报查询
当前所在位置 : 天气网 天气生活 生活 正文

堆和栈的区别 堆和栈有什么不同

2020-07-21  来源:天气网  【字体:  

  堆与栈是开发人员必须要知道的两个概念。在理解这两个概念时,需要放到具体的场景下。因为不同场景下,与栈代表不同的含义。那么,堆和栈的区别在哪里呢?一起来看看吧!

堆和栈的区别 堆和栈有什么不同

  堆和栈的区别

  堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。其性质主要有两点:1、堆中某个节点的值总是不大于或不小于其父节点的值;2、堆总是一棵完全二叉树。

  栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。

堆和栈的区别 堆和栈有什么不同

  1、空间分配不同:栈由操作系统自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。而堆一般由程序员分配释放,如果程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

  2、缓存方式不同:栈使用的是一级缓存,通常被调用时处于存储空间中,调用完毕立即释放;而堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定。所以,调用这些对象的速度相对来得低一些。

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

热点推荐

HOT