堆栈和堆之间有什么区别?

问题描述:

程序分为4个部分:堆栈,数据,代码,堆。堆栈和堆之间有什么区别?

我知道他们每个人都是什么样的数据结构(就像在Java中使用的一样),但是他们在操作系统中的区别(和定义)是什么?

程序分为4个部分:堆栈,数据,代码,堆。

这不是一个准确的起点。

一个程序被分成具有各种属性的程序段。

  • 只读/不执行(你调用数据)
  • 只读/执行(你调用的代码)
  • 读/写(这既包括堆和栈)。

堆栈只是一个内存块,使用push和pop操作分配和释放。分配和释放通常使用堆栈指针寄存器实现。

堆是一个或多个内存块,可以按任何顺序和各种大小分配和释放。操作系统对程序堆没有任何知识。由代码链接的库进行管理(尽管操作系统会有自己的堆)。操作系统只是看到这些内存块。