一 空间分配区别:
栈:系统自动分配释放,存放函数参数值,局部变量
堆:由程序员分配释放,弱程序不释放,程序结束时可能由OS回收,分配方式类似于链表
二 堆栈缓存方式区别
1. 栈一级缓存,通常都是被调用时处于储存空间,调用完毕立即释放;
2. 堆存放在二级缓存,生命周期由虚拟机的垃圾回收算法来决定,因此调用对象速度相对较低。
三 堆栈数据结构区别
堆:完全二叉树,堆排序
栈:先进后出的数据结构
队列:先进先出
队列:是先进先出,有出口和入口,先进去可以先出来。
栈:就像一个箱子,后放上去的,可以先出来
堆:是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。{堆是指程序运行是申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。
栈是先进后出的,但是于堆而言却没有这个特性,两者都是存放临时数据的地方。
堆是应用程序在运行的时候请求操作系统分配给自己内存,对于堆,我们可以随心所欲的进行增加变量和删除变量,不要遵循什么次序,只要你喜欢。
参考https://blog.csdn.net/qq_42092177/article/details/80459227