寄存器在物理意义上是一个硬件,因此会有被复用的时候
当一个程序,不同的函数内存入局部变量时,
比如函数A和函数B
函数A写入A中的局部变量到寄存器,
在函数A中调用函数B,
函数B将函数B内局部变量写入到寄存器
此时,很明显的之前,函数A写入到寄存器中的内容被B新写入的变量覆盖了,
但为什么在当我们调用结束后,返回函数A之后,打印A中定义的局部变量,还是能够得到之前A中定义的值呢?
这是由于,当我们掉用函数B之前,函数A将他的变量写入寄存器后,会将其写入到寄存器内的数据记录在函数A所对应的栈中。(这个角度思考,似乎被A使用了的寄存器就是A的?)
同理当我们调用函数B时,B中写入在寄存器的变量,也被B对应的栈保存了。
由于栈是不被共享的空间,由此当函数B调用完回到函数A后,在A函数内打印其内的局部变量值,会在A对应的栈中,找到之前写入到寄存器内的数据。