美文网首页
什么是“栈”

什么是“栈”

作者: 西门吹雪123 | 来源:发表于2020-03-21 17:42 被阅读0次

关于“栈”的解析,查了一些资料,都是这么说的:“栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。”
从这句话中,我的理解是:栈就是由编译器本身进行自动分配和释放的。
我一直很疑惑,代码编译生成可执行文件后,安装在其他设备上运行,哪里来的编译器,编译器不是在程序开发的阶段才要用到的吗?生成了可执行文件,不需要编译器了吧,如果没有有编译器,他怎么能够对“栈”进行自动分配和释放呢?
有点头大……
或许是网上的这个描述让人产出误解。
翻了翻这两本书,对堆栈的描述进行了理解:
1.《深入理解计算机系统》1.7.3虚拟内存
2.《Linux_UNIX系统编程手册》6.3进程内存布局

内容挺多,我总结了一下,应该这么解析:代码在编译阶段,编译器只是指定了栈的生成规则,它告诉操作系统,栈应该怎么分配,在哪里分配,分配多大,编译器并不会生成栈,生成“栈”的这个动作,是程序在被安装所在的机器设备上在运行的时候,由系统完成的。
简单一句话:编译器确定生成栈的规则,由操作系统分配和管理。

相关文章

  • 什么是栈?

    本文将介绍一个重要的数据结构—栈,和之前讲到的链表、数组一样也是一种数据呈线性排列的数据结构,不过在这种结构中,我...

  • 什么是“栈”

    关于“栈”的解析,查了一些资料,都是这么说的:“栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局...

  • LeetCode刷题指北----单调栈

    1.什么是单调栈?有什么好处? 定义: 单调栈就是栈内元素递增或者单调递减的栈,并且只能在栈顶操作。单调栈的维护是...

  • 栈和队列—什么是栈

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • 浅说iOS为什么会上栈溢出

    简介 本文介绍了如下内容 栈的概念 为什么会发生栈溢出 栈溢出的几种栗子 怎么预防和发现栈溢出。 什么是栈? 从数...

  • 数据结构:栈与队列

    本文内容:一、栈1、什么是栈?2、栈的操作集.3、栈的 C 实现.二、队列1、什么是队列?2、队列的操作集.3、队...

  • 什么是栈帧

    一句话总结:栈 我们通常指保存局部变量,具有先进后出 (FILO) 特性的一段高内存地址空间,维护这个 栈 结构而...

  • 什么是全栈

    全栈一般是技术方面的领导者,需要涉猎广?懂得如何解决问题以及对应所需的技术和工具。但具体的细节掌握比不上某个学科精...

  • 什么是调用栈

    调用栈是解释器(就像浏览器中的javascript解释器)追踪函数执行流的一种机制。当执行环境中调用了多个函数时,...

  • 阅读目录 什么是栈栈的存储结构栈的常见操作及实现代码 1.什么是栈 首先栈是一种特殊的线性表。那它的特殊性表现在哪...

网友评论

      本文标题:什么是“栈”

      本文链接:https://www.haomeiwen.com/subject/tiluyhtx.html