據我的理解,每個線程通常只獲得一個堆棧(而一個進程中的所有線程通常共享一個堆)。我一直認爲堆棧用於存儲函數調用發生時程序計數器(PC)的值。但後來我在某處讀取某些變量類型,如integer
或boolean
也被分配到堆棧中。由於堆棧上的值是以嚴格的FILO方式管理的,因此這些變量如何隨時檢索?變量如何在任何時候被檢索,如果他們被分配到堆棧上?
例如,在聲明int a, b, c;
之後,我可以在任何時間範圍內隨時對這些變量進行任何操作。這是如何完成的?爲什麼值c
在堆棧頂部,因此隱藏值a, b
?