首页文章正文

什么是栈帧,关键帧空白关键帧和普通帧如何区别

堆是先进先出,栈是先进后出 2024-01-01 09:38 119 墨鱼
堆是先进先出,栈是先进后出

什么是栈帧,关键帧空白关键帧和普通帧如何区别

栈帧也叫过程活动记录,是编译器用来实现过程或函数调用的一种数据结构。C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。栈帧表示程序的函数调用记录,而栈帧又是记录在栈上面,很明显栈上保持了N个栈帧的实体,实际上我们这里说的栈帧是软件上的概念,据说有硬件概念,不是很了解),那就可以说栈帧将栈分割

函数栈帧的创建与销毁的整个过程就是我们定义、调用一个函数,并对其传参,最终得到返回值以及对函数空间栈是从高地址向低地址延伸,一个函数的栈帧用ebp 和esp 这两个寄存器来划定范围.ebp 指向当前的栈帧的底部,esp 始终指向栈帧的顶部;ebp 寄存器又被称为帧指针

简言之,栈帧就是利用EBP(栈帧指针,请注意不是ESP)寄存器访问局部变量、参数、函数返回地址等的手段。栈帧结构PUSH EBP ;函数开始(使用EBP前先把已有值保存栈帧在程序中负责保存程序的局部变量、参数与函数最终执行完后的返回地址。我们在写C语言代码时经常会接触到的一个概念“局部变量”就是由栈帧来负责保存维护的。栈从数据结构上

˙▽˙ 在Java栈中保存的主要内容为栈帧。它的数据结构就是先进后出。每当函数被调用,该函数就会被入栈,每当函数执行完毕,就会执行出栈操作。而当前栈顶,即为正在执行的函数。每个方法在执一句话总结:栈我们通常指保存局部变量,具有先进后出(FILO) 特性的一段高内存地址空间,维护这个栈结构而使用两个寄存器:栈指针rsp、帧指针rbp. 当程序调用层数比较深时,栈内存呈现

后台-插件-广告管理-内容页尾部广告(手机)

标签: 关键帧空白关键帧和普通帧如何区别

发表评论

评论列表

51加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号