c++ - 代码输出说明

标签 c++ global-variables output

<分区>

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

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

此代码已编译并生成可执行文件。如果此可执行文件并行运行 2 个终端。它会打印什么。

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

有人能解释一下为什么会这样吗?我知道这可能是由于虚拟内存引起的,但我无法将各个部分放在一起。

最佳答案

这很明显是由于虚拟内存,是的。

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

关于c++ - 代码输出说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30055536/

相关文章:

php - INSERT 表行到另一个表

c++ - 'pass variable by reference' 是如何工作的?

c++ - 使用 vector 创建形状

c++ - 我可以在我的 C++ 项目中使用 Watson TTS 吗?

c++ - 动态链接时共享库中的全局变量和静态变量会发生什么情况?

r - 如何在R中以某种方式获得输出

c++ - QList 的问题

用作标志的 JavaScript 全局变量

c - 打印所有全局变量/局部变量?

python - 数字输出有时有.0