据我了解,每个线程通常只获得一个堆栈(而进程中的所有线程通常共享一个堆)。我一直认为堆栈用于在函数调用发生时存储程序计数器(PC)的值。但后来我在某处读到某些变量类型,例如integer
orboolean
也被分配到堆栈上。既然栈上的值是通过严格的 FILO 方式管理的,那么如何随时检索这些变量呢?
例如,在声明 之后int a, b, c;
,我可以在它们的范围内随时以任何顺序对这些变量做任何我想做的事情。这是怎么做到的?为什么 value 不在c
堆栈顶部并因此隐藏 values a, b
?