- 首先说英文名:堆叫 heap 栈叫 stack
数据结构中的堆和栈
- 栈就是先进后出的一个数据结构,像一个装满盒子的管道一样
- 堆是满足父子节点大小(比如大根堆中规定父节点的值要比子节点大)关系的一种完全二叉树
操作系统,编程软件中的堆和栈
- 栈系统分配 系统回收 局部 不持久
- 堆 程序源分配 程序源回收 全局 持久
在go语言中堆和栈,栈当然也是系统分配系统回收的东西,但是堆在go语言中也不需要程序员自己回收,因为有gc,也就是垃圾回收机制。
可以将堆视为很多的一块内存,其中有很多被编号的内存单元,用于存储数据。与栈不同,你不可以对这些单元进行标记(即声明定义变量),而必须先申请内存单元的地址,然后将它存储到指针中。具体是什么意思呢?也就是说你在栈里的数据可以直接访问,但是在堆中你必须通过指针才能访问数据不能直接访问。