当程序去执行函数时候可能发生的情况会根据所用操作系统以及编译器的不同而有所不同:
(1):指令指针(是一块特殊的内存区域,直接建立在中央处理器cpu内部)的地址值增加1,指向函数调用后的下一条指令,这个地址随后被放入堆栈中,它将被作为函数(方法)返回时的返回地址.
(2):在堆栈中为你所生命的返回值类型开辟新空间.
(3)被调方法的地址存储在为此目的而划出的一块特殊内存区域中,此时系统将这个地址加载到指令指针中,于是执行下一条指令将位于被调用函数中
(4)当前的堆栈的栈顶被记录下来并存入一个叫栈桢的特殊指针中,从现在开始在函数(方法)返回前加入堆栈的任何数据都将被视为方法的局部数据
(5)函数的所有变元都被放入堆栈
(6)现在执行指令指针中的指令,也就是执行函数的第一条指令
(7)局部变量按其定义的方式被压入堆栈....在运行期间,局部变量也被添加到堆栈,当函数返回时,这些值都从堆栈中被弹出而删除.