解释代码的输出

时间:2015-05-05 14:17:00

标签: c++ global-variables output

我最近被要求考虑以下代码的输出:

#include <iostream>
int gvar;
int main (void)
{
     cout << &gvar << endl;
     while (true);
     return 0;
}

编译此代码并生成可执行文件。如果这个可执行文件在run 2中并行运行。什么会印刷。

我的回复是它会打印2个不同的地址。但在跑步时,我发现两个终端都打印了相同的地址。

有人可以解释为什么会这样。我知道这可能是由于虚拟内存造成的,但我无法将这些内容放在一起。

1 个答案:

答案 0 :(得分:5)

非常明显是由于虚拟内存,是的。

像这样的代码看到的地址是虚拟的。由于每个进程都有自己的虚拟到物理映射表,因此虚拟地址在每个进程中都不一定是唯一的。