3.4 函数调用机制

◆  局部变量占用的内存是在程序执行过程中“动态”地建立和释放的。 这种“动态”是通过栈由系统自动管理进行的。当任何一个函数调用发生时,系统都要作以下工作:
(1)建立栈空间;
(2)保护现场:主调函数运行状态和返回地址入栈;
(3)为被调函数中的局部变量分配空间,完成参数传递;
(4)执行被调函数函数体;
(5)释放被调函数中局部变量占用的栈空间;
(6)回复现场:取主调函数运行状态及返回地址,释放栈空间;
(7)继续主调函数后续语句。

◆  函数调用过程中的内存使用 :通过下面例子来看函数调用时内存的变化情况。
void fun1(int, int);
void fun2(float);
int main(){
    int x=1;y=2;
    fun1(x, y);
    return 0;
}
void fun1(int a,int b){
    float x=3;
    fun2(x);
}
void fun2(float y) {
    int x;
    …
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值