美文网首页
什么是“栈”

什么是“栈”

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

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

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

    相关文章

      网友评论

          本文标题:什么是“栈”

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