C++ 函数调用过程中栈的变化解析

本文探讨了C++函数调用时栈的变化,特别是栈帧的概念和作用。在函数调用过程中,栈帧用于传递参数、保存返回信息和局部变量。栈从高地址向低地址延伸,每个函数调用都有独立的栈帧,由帧指针%ebp和栈指针%esp共同维护。通过示例说明了调用函数时栈帧的创建、参数传递、局部变量分配以及返回时的栈帧清理过程。
摘要由CSDN通过智能技术生成

“ 走好选择的路,别选择好走的路,你才能拥有真正的自己。”

 

There you go again!

I'll back you up!

 

记录下函数调用的情况~

 

函数调用的另一个词语表示叫作 过程。一个过程调用包括将数据和控制从代码的一部分传递到另一部分。

另外,它还必须在进入时为过程的局部变量分配空间,并在退出时释放这些空间。

而大多数机器的数据传递、局部变量的分配和释放通过操纵程序栈来实现。为单个过程(函数调用)分配的那部分栈称为栈帧

需要明确的是,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址)。

先来了解一个概念,栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储。栈帧其实是两个指针寄存器,寄存器%ebp为帧指针࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值