我們研究過堆棧的擴展和縮小。但在實踐中它不會發生 乘坐棧擴展的一個例子,從地址100爲0,即第一個變量達到100,然後旁邊99等。現在,當我們編寫以下代碼現在爲什麼堆棧不能回滾
int main()
{
{
int i;
cout<<&i;//100 is displayed on screen
}
{
int j;
cout<<&j;//99 is displayed on screen
}
}
當我們宣佈我的時候,它的地址是100,然後它的範圍完成。然後,j被聲明在一個新的作用域中,現在它應該再次擁有地址100,因爲我已經完成了,堆棧應該回退,但是它沒有,j的地址爲99.爲什麼?你可以解釋嗎??
順便說一下,您標記了問題C,但您明確使用C++編譯器。所以我用正確的語言重新標記。 –
獲得更好的編譯器,可以更高效地重用堆棧。 –
@KerrekSB:這可能是完全相同的編譯器,但爲發佈而不是調試構建。在調試模式下,即使在需要變量後,仍然可以看到變量的值。 – MSalters