试题 - 64 位虚拟内存 - 指针变量的正确地址

试题 - 64 位虚拟内存 - 指针变量的正确地址

模拟考试中存在以下问题:

以下哪个地址是 x86_64 处理器上指针变量的正确内存地址?

  • 0x7ffffff3328
  • 0x0
  • 0x8043844
  • 0x555555ab3b

搜索时我发现x86_64虚拟内存地址是48位长。但这让我感到困惑,所有可能的答案都没有显示 48 位地址。我可以假设地址的末尾将填充零吗?

如果我假设所有地址都是有效的 48 位地址,我可以消除 0x0 和 0x8043844,因为 0x0 将是空指针,而 0x8043844 应该是内核空间中的地址。所以现在只剩下0x7ffffff3328和0x555555ab3b了。如果检查 kernel.org 它说 0x0000000000000000 到 0x00007fffffffffff 是有效的用户空间地址(https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt)。

我真的不确定我错过了什么。我对地址填充零的假设是否正确?哪个地址是正确答案,为什么?

我真的很感激任何帮助:)

相关内容