gpt4 book ai didi

64位机器上的c++指针

转载 作者:可可西里 更新时间:2023-11-01 17:37:26 34 4
gpt4 key购买 nike

我在64位linux下使用c++,编译器(g++)也是64位的。当我打印某个变量的地址时,例如一个整数,它应该打印一个 64 位整数,但实际上它打印了一个 48 位整数。

int i;
cout << &i << endl;

output: 0x7fff44a09a7c

我想知道另外两个字节在哪里。期待您的帮助。

谢谢。

最佳答案

大多数 C++ 实现中的地址打印会抑制前导零,以提高可读性。像 0x00000000000013fd 这样的东西并没有真正增加值(value)。

当您想知道为什么您通常不会在用户空间中看到超过 48 位的值时,这是因为当前的 AMD64 架构只是定义为具有 48 位的虚拟地址空间(如 cat/proc 所示)/cpuinfo 在 Linux 上)

关于64位机器上的c++指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190708/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com