int testFun(int A)
{
   return A+1;
}
int main()
{
   int x=0;
   int y= testFun(x)
   cout<<y;
}


众所周知,堆栈保存局部变量,这意味着当我进入主函数时,堆栈具有变量(x和y),而当我调用函数(testFun)时,堆栈具有变量(A)
当我从(testFun)返回时,堆栈弹出最后一帧
但是这里的问题是,当我从(testFun)返回时,如何知道在调用(testFun)之前它在主函数中的最后位置

最佳答案

当我从(testFun)返回时,如何知道在调用(testFun)之前它在主函数中的最后一个位置


编译器解析代码并生成在CPU上运行的机器指令。函数调用会生成CALL指令。函数退出时,将使用RET指令返回到调用方。

CALL指令将紧跟CALL本身的指令的地址压入调用堆栈,然后跳转到指定函数的起始地址。

RET指令从调用堆栈中弹出该地址,然后跳转到指定的地址。

09-06 18:40