为了账号安全,请及时绑定邮箱和手机立即绑定

入栈是什么意思?移动或复制方法?

入栈是什么意思?移动或复制方法?

芜湖不芜 2021-07-16 15:05:27
当一个对象调用一个函数时,该函数会从方法区被压入堆栈。我的问题是:问:在这种情况下,“推”是什么意思?这是否仅仅意味着移动(从方法区)或复制功能(的副本的方法的压入堆栈)?
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

方法本身不会被压入堆栈。推送返回地址,以及传递给您正在调用的方法的任何参数。例如:


void foo() {

    int x = bar();

    int y = x*3;

    ...

}


var bar() {

    ...

    return 5;

}

在foo调用 时bar,将要执行的下一条指令的地址(对 的赋值y)被压入调用堆栈。控制然后分支到bar,它做它的事情,并将值5放在返回寄存器中(如何返回值在这里并不真正相关)。然后,运行时从调用堆栈中弹出返回值并分支回到该指令。继续执行y = x*3。


如果您搜索 [java 方法调用堆栈],您会发现一些很好的示例,其中包含更详细的解释。


查看完整回答
反对 回复 2021-07-29
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信