我做了一个C++变量,把它的地址打印出来,结果非常大。0x7ffdf584da2c. 我的代码如下。
#include <iostream>
using namespace std;
int main()
{
int var = 10;
cout << "value: " << var << " address: " << &var << endl;
return 0;
}
value: 10 address: 0x7ffec6f111c4
这种十六进制内存地址(0x7ffdf584da2c)看起来是不可能的,因为它的十进制地址是(140728722577964),对于我的笔记本来说是相当大的。 我有一台双启动的笔记本电脑,装有Windows 10和Ubuntu,内存大约500GB。代码是用Ubuntu写的。
这很好。
2020年的计算机非常复杂。你的进程会得到一个 虚拟地址空间 其最大的 "插槽 "几乎肯定会超过你系统中实际内存的大小(和页面文件)。
你看到的是堆栈,它从内存的顶部(不是实际的内存,而是操作系统处理的)到底部。因此,通常如果从一个受操作系统和架构位(32,64,...)限制的高值开始。