函数的调用及栈帧的创建和销毁

本文详细介绍了函数调用的三个步骤:调用、执行及返回。重点解释了栈帧的创建与销毁,以及在此过程中参数如何传递和局部变量的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数的调用

函数在调用的过程中分为三步,第一步是函数的调用,第二步是执行函u数体,第三步是返回。

第一步  函 数的调用

1.将函数调用语句的下一条语句的地址保存到栈中,以便函数调用完返回;
2.将实参从后往前依次入栈;
3.跳转到函数体处。

第二部   函数体执行

1.如果函数体中定义了变量,将变量入栈;
2.将每一个形参用实参的值取代,执行函数体的功能;
3.将函数体中的变量和保存到栈中的实参值,依次从栈中取出,释放栈空间。

第三部   返回

返回的过程是从栈中取出刚开始调用函数时压入的地址,跳转到函数的下一条语句。

栈帧的创建和销毁


从main函数的地方开始,要展开main函数的调用就得为main函数创建栈帧,ebp存放了指向函数栈帧栈底的地址,esp存放了指向函数栈帧栈顶的地址,当main函数调用其他函数时先给函数创建栈帧,当调用完成次函数返回main函数时,被调用的函数的栈帧就会被销毁。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值