我最近被要求考慮下面的代碼的輸出的輸出:解釋代碼
#include <iostream>
int gvar;
int main (void)
{
cout << &gvar << endl;
while (true);
return 0;
}
該代碼被編譯並生成一個可執行文件。如果這個可執行文件在run 2終端中並行。它會打印什麼。
我的回覆是它會打印2個不同的地址。但在跑步時,我發現在兩個終端上都印有相同的地址。
有人可以解釋爲什麼會發生這種情況。我知道這可能是由於虛擬內存造成的,但我無法將它們放在一起。
我認爲這比任何語言都更關聯編譯器。 –
很可能你正在獲取可執行文件堆棧空間中的內存地址,如果是這種情況,那麼它應該是相同的地址。 – NathanOliver
@NathanOliver不是那麼重要,但沒有那個變量不應該在棧上。畢竟,這是一個全球變量。 – unwind