堆和栈的区别,为什么栈要比堆快?大根堆,小根堆是什么?

区别

1.申请方式:栈是系统自动分配和释放的,堆是程序员手动分配释放的。

2.效率:栈是系统分配的,速度快,没有内存碎片。堆有程序员分配,速度较慢,操作不动会产生内存碎片。

3.扩展方向:栈是由高地址向低地址扩展,堆是低地址向高地址扩展。

4.程序中的局部遍历是使用栈空间,new/malloc等使用的是堆空间,函数的调用,形参,返回值的压栈出栈也是使用栈空间。

为什么栈更快

栈是操作系统提供的数据结构,计算机底层对他提供了一系列的支持:分配专门的寄存器存储寄存器地址,压栈和出栈都有相应的指令; 而堆是C/C++库函数提供的,机制复杂,需要一些分配内存,合并内存,释放内存的算法,所以效率低。

大根堆

父节点的值大于等于子节点的值

小根堆

父节点的值小于等于子节点的值

全部评论
堆又被称为完全二叉堆,逻辑上基于完全二叉树,物理上基于线性结构。
点赞
送花
回复 分享
发布于 2022-03-22 01:26

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务