C++ 指针显示不可能的内存位置
C++ pointer showing impossible memory location
我创建了一个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 以及大约 500 GB 内存的双启动笔记本电脑。代码写在Ubuntu.
还好。
2020 年的计算机非常复杂。您的进程得到一个 virtual address space,其最大值 "slot" 几乎肯定会超过系统(和页面文件)上实际 RAM 的大小。
您看到的是从内存顶部(不是实际内存,而是操作系统处理的内容)到底部的堆栈。因此,通常 if 以受限于 OS 和体系结构位(32、64,...)的高值开始。
我创建了一个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 以及大约 500 GB 内存的双启动笔记本电脑。代码写在Ubuntu.
还好。
2020 年的计算机非常复杂。您的进程得到一个 virtual address space,其最大值 "slot" 几乎肯定会超过系统(和页面文件)上实际 RAM 的大小。
您看到的是从内存顶部(不是实际内存,而是操作系统处理的内容)到底部的堆栈。因此,通常 if 以受限于 OS 和体系结构位(32、64,...)的高值开始。