堆,栈,队列的区别

一 空间分配区别:

     栈:系统自动分配释放,存放函数参数值,局部变量

     堆:由程序员分配释放,弱程序不释放,程序结束时可能由OS回收,分配方式类似于链表

二 堆栈缓存方式区别

     1. 栈一级缓存,通常都是被调用时处于储存空间,调用完毕立即释放;

     2. 堆存放在二级缓存,生命周期由虚拟机的垃圾回收算法来决定,因此调用对象速度相对较低。

三 堆栈数据结构区别

    堆:完全二叉树,堆排序

    栈:先进后出的数据结构

    队列:先进先出

 

 

队列:是先进先出,有出口和入口,先进去可以先出来。

栈:就像一个箱子,后放上去的,可以先出来

堆:是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。{堆是指程序运行是申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。

 

 

栈是先进后出的,但是于堆而言却没有这个特性,两者都是存放临时数据的地方。

堆是应用程序在运行的时候请求操作系统分配给自己内存,对于堆,我们可以随心所欲的进行增加变量和删除变量,不要遵循什么次序,只要你喜欢。

参考https://blog.csdn.net/qq_42092177/article/details/80459227

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值