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

先掉用的是quarate函数后调用的是rent 函数

函数中到底是先调用的是quarate函数还是rent 函数,如果先调用quarate函数,为什么代码段中quarate函数的地址比rent函数的地址大。代码段的内存分配不是由小到大吗?quarate中s参数地址比较大也不能说明栈的内存分配是由上到下的。

正在回答

1 回答

函数本身代码的地址并不在中,它们在代码段中。

函数调用时才会将参数和各种用到的变量以栈帧结构存在中,这会使依照调用顺序来增长。所以参数的压栈地址可以说明它们的调用顺序。

0 回复 有任何疑惑可以回复我~
#1

Dean1991 提问者

回答问题,请审题,谢谢!
2015-09-22 回复 有任何疑惑可以回复我~
#2

onemoo 回复 Dean1991 提问者

我上面已经回答了。 我换一种说法再复述一遍: 函数的指令都存在代码段中,并不是按照调用顺序储存的,它们的顺序是编译链接后就确定的,与运行时的调用顺序无关。 运行中传参数确实是和运行时的调用顺序有关的,所以你可以由参数地址的大小来判断函数调用顺序。函数调用的栈帧在栈中是由高向低增长的,所以先调用的函数的参数地址会大于后调用的函数的参数地址。
2015-09-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

先掉用的是quarate函数后调用的是rent 函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信