易网时代-编程资源站
Welcome
首页
/
软件开发
/
C++
/
小览call stack(调用栈) (一)
小览call stack(调用栈) (一)2011-05-31 csdn博客 mountaintaiII栈在计算机领域中是个经常提到的名词,数据结构中有栈;网络传输中有协 议栈。今天我们讨论的调用栈(call stack),指的是在程序的执行过程中存储函 数调用信息的动态数据结构。这个定义可能太抽象了一些,在给出具体的例子之前,请大家先思考一个问 题,哪些信息是函数调用过程中所需要的?或者这么问,一个编译器,在面对一 个函数的调用指令时,该生成哪些代码?首先,函数的返回地址要保存下来。就好像你和你的小狗玩仍飞碟游戏,每 一个函数调用好比扔一个飞碟,当你的狗狗哼兹哼兹的捡来飞碟,函数完执行的 时候,它一定得知道去哪里把飞碟还给你。
然后,函数的参数是个必不可少的元素,这个很直观,就不多罗嗦了。第三 ,被调用的函数的局部变量也要存储在栈上。因为根据局部标量的定义,对相同 函数的不同调用,局部变量有不同的存储空间,不会互相影响,所以这些数据也 是跟函数调用息息相关的信息。下面,我们通过一个例子,来看看函数的调用栈中的信息:对于下面一段c++程序
#include <stdio.h>int SumFromOne(int d){int sum = 0xabcd;if (d == 1)sum = 1;elsesum = d + SumFromOne(d-1);return sum;}void main(){int sum = SumFromOne(10);printf("sum=%d", sum);}
[Ctrl+A 全部选择 提示:你可 先修改部分代码,再按运行]
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图