【问题标题】:What is the difference between the stack and the heap?栈和堆有什么区别?
【发布时间】:2016-08-18 03:18:24
【问题描述】:

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

我知道它们各自作为数据结构是什么(就像在 Java 中使用的那样),但是它们在操作系统中的区别(和定义)是什么?

【问题讨论】:

    标签: multithreading process operating-system


    【解决方案1】:

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

    这不是一个准确的起点。

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

    • 只读/不执行(你称之为数据)
    • 只读/执行(你称之为代码)
    • 读/写(包括堆和栈)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-10
      • 2016-01-19
      • 2015-01-15
      • 2011-11-20
      • 2014-07-13
      • 2020-10-24
      • 2021-08-29
      • 1970-01-01
      相关资源
      最近更新 更多