堆栈和堆有什么区别?

时间:2016-04-24 20:33:02

标签: multithreading process operating-system

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

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

1 个答案:

答案 0 :(得分:1)

  

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

这不是一个准确的起点。

程序分为具有各种属性的程序部分。

  • 只读/无执行(您称之为数据)
  • 只读/执行(您调用代码)
  • 读/写(包括堆和堆栈)。

堆栈只是一个使用推送和弹出操作分配和释放的内存块。分配和释放通常使用堆栈指针寄存器实现。

堆是一个或多个内存块,可以按任何顺序和各种大小分配和释放。操作系统对所有程序堆都不了解。它们由链接到代码的库管理(尽管操作系统将拥有自己的堆)。操作系统只是看到这些内存块。