数据结构中的堆和栈

堆: 满足父子节点大小关系(大根堆:父节点大于子节点)的一种完全二叉树。

栈: 一种先进后出的结构。

操作系统中的堆和栈

都指的是内存空间。

  1. 栈的大小是固定的,是一块连续的内存区域;堆的大小受限于系统中有效的虚拟内存,是不连续的内存区域。
  2. 栈内存操作系统来分配,堆内存由程序员自己来分配(按需申请,动态分配)。
  3. 栈的空间由系统决定何时释放,堆的空间不会由系统主动释放需要自己决定何时去释放。
  4. 堆的使用容易产生碎片,但用起来最方便。
  5. 栈有系统自动分配,只要栈剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
  6. 栈用于存放方法中声明的局部变量以及传入这些方法的参数(实参);函数调用栈的保存。
  7. 栈的空间比堆的空间要小,