gpt4 book ai didi

c++ - 如果我知道数据在哪里,我能知道什么? 0xfffffff7fffd9d8 与 0x10019c1e0?

转载 作者:行者123 更新时间:2023-11-30 02:35:22 25 4
gpt4 key购买 nike

我想知道指针的数值是否告诉我在调试期间有用的东西。

例如,我的调用堆栈中有以下内容:

std::basic_ostringstream<char, std, char_traits<char>, std::allocator, <char>void>::str(
0xffffffff7fffd9d8,
0x10019c1e0,
0x100446710,
0x0,
0xffffffff7fffd9d8,
0xffffffff7b331688),
at 0xffffffff7b1b28ec

似乎有 0xfff0x100 形式的指针。这种差异有意义吗?

最佳答案

在 64 位平台上,理论上您可以寻址 264 或大约 16 艾字节。由于大多数应用程序不需要这么大的地址空间,硬件供应商定义更小的虚拟地址空间以降低地址转换的成本。因此,在 AMD 和 Intel 芯片上,只有地址的最低 48 位是有效的,并且第 48 位到第 63 位必须是第 47 位的拷贝。这些被称为规范形式地址,它们跨越以下范围:

  • 000000000000000000007FFFFFFFFFFFF
  • FFFF800000000000FFFFFFFFFFFFFFFF

前者称为规范下半部分 地址,后者称为规范上半部分。这是内核的决定,但通常上半部地址指的是堆栈和静态程序数据区,而下半部地址指的是堆内存。

来源:Wikipedia

关于c++ - 如果我知道数据在哪里,我能知道什么? 0xfffffff7fffd9d8 与 0x10019c1e0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701451/

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