函数调用原理与栈
来源:互联网 发布:冰川网络股票代码 编辑:程序博客网 时间:2024/06/05 17:11
程序中的栈是如何工作的。当一个函数(调用者)调用另一个函数(被调用者)时,运行时系统将把调用者的所有实参和返回地址压入到栈中,栈指针将移到合适的位置来容纳这些数据。最后进栈的是调用者的返回地址。当被调用者开始执行时,系统把被调用者的自变量压入到栈中,并把栈指针再向下上移,以保证有足够的空间存储被调用者声明的所有自变量。当调用者把实参压入栈后,被调用者就在栈中以自变量的形式建立了形参。被调用者内部的其他自变量也是存放在栈中的。由于这些进栈操作,栈指针已经移动所有这些局部变量之上。但是被调用者记录了它刚开始执行时的初始栈指针,以他为参考,用正或负的偏移值来访问栈中的变量。当被调用者准备返回时,系统弹出栈中所有的自变量,这时栈指针移动了被调用者刚开始执行时的位置。接着被调用者返回,系统从栈中弹出返回地址,调用者就可以继续执行了。当调用者继续执行时,系统还将从栈中弹出调用者的实参,于是栈指针回到了调用发生前的位置。
阅读全文
0 0
- 函数调用原理与栈
- 函数调用与栈
- 函数调用约定与函数名称修饰规则(原理)
- 栈中函数调用原理详解
- 函数调用栈的获取原理分析
- 函数调用栈的获取原理分析
- 函数调用-----压栈的工作原理
- 函数调用 压栈的工作原理
- 栈中函数调用原理_详解
- 函数调用的原理
- C++函数调用原理
- 函数调用原理
- C函数调用原理
- 栈帧---函数调用原理
- C函数调用与栈
- 函数调用约定与栈
- 函数调用与栈、堆
- 栈与函数调用惯例
- 算法导论程序22--指针和对象的实现(Python)
- WPF X:Shared概述
- 随机非线性问题的随机方法
- 计算机研究生复试上机题目:顺时针螺旋矩阵简单实现
- MyBatis 延迟加载,一级缓存,二级缓存设置
- 函数调用原理与栈
- Java笔记
- 1002. 写出这个数 (20)
- Codeforces 808G Anthem of Berland[dp][kmp]
- Linux下快速MD5检测
- pyrhon--c++--连续子数组的最大和
- Xcode常用快捷键与技巧分享
- Dagger2的使用,这一篇就够了!
- 我的第一篇博客