zoukankan      html  css  js  c++  java
  • 1:出现原因:

    栈是为了函数间的调用服务的

    2:数据结构

    栈的数据结构是 LIFO  last in first out 后进先出的

    3:物理

    就是开辟的一段内存空间,栈底在上 内存大地址,栈顶在下 内存小地址,所以我们经常会说 栈指针地址变大是在释放空间 而变小是分配了新的空间

    4:程序中的栈应用

    我们写程序的时候,经常会把一个功能封装为一个方法,然后在使用的地方调用这个方法,这种函数也可以说方法间的调用就会用到栈了。

    程序执行到某行,要去调用下一个方法,那我们如何保证执行完再回来当前方法呢。cpu是拿寄存器上的地址去执行指令,我们要把要调用的方法的第一行地址放到pc上,等cpu去执行,pc上放着的原来的下一条指令-当前方法的下一个指令 要压入栈中,不然就丢失了,记录无法回到当前方法了,当被调用的方法执行完毕后就会释放压入栈的指令还给pc,那cpu又接着执行。

    对于简单的方法间调用,比如被调用的方法没有再调用其他方法,那也可以通过函数内联来实现调用,就是把被调用的方法程序指令直接插入到当前方法,节省了出入栈的性能,这个是编译器可以优化的,也可以在函数上inline来实现-对C来说。

    找到那个感觉 就算打开了那个脑洞

    本文来自博客园,作者:xiao~xiao,转载请注明原文链接:https://www.cnblogs.com/angin-iit/p/11474456.html

  • 相关阅读:
    用户交互
    python简介
    maven阿里云镜像setting
    apache虚拟主机的ip用法 包括iis
    apache的虚拟主机配置和指定目录的访问描述(
    apache重定向301 配置,根域名转到www
    前端学习
    一步一步写jQuery插件
    json 和 table控件
    下载相关
  • 原文地址:https://www.cnblogs.com/angin-iit/p/11474456.html
Copyright © 2011-2022 走看看