C++指针显示不可能的内存位置

问题描述 投票:0回答:1

我做了一个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写的。

c++ pointers memory size diskspace
1个回答
1
投票

这很好。

2020年的计算机非常复杂。你的进程会得到一个 虚拟地址空间 其最大的 "插槽 "几乎肯定会超过你系统中实际内存的大小(和页面文件)。


0
投票

你看到的是堆栈,它从内存的顶部(不是实际的内存,而是操作系统处理的)到底部。因此,通常如果从一个受操作系统和架构位(32,64,...)限制的高值开始。

© www.soinside.com 2019 - 2024. All rights reserved.