【发布时间】:2014-01-30 04:17:52
【问题描述】:
我一直在通过 Jeffrey Richter 的 C/C++ 阅读 Windows,并在有关将 32 位应用程序移植到 64 位环境的 Windows 内存架构一章中遇到了以下 sn-p。
如果系统能够以某种方式保证不会在 0x00000000'7FFFFFFF 以上进行任何内存分配,则应用程序将正常工作。当高 33 位为 0 时,将 64 位地址截断为 32 位地址不会导致任何问题。
我无法理解为什么系统需要保证在0x00000000'7FFFFFFF 而不是0x00000000'FFFFFFFF 之上没有进行内存分配。只要32 的高位是0,就可以截断地址吗?我可能遗漏了一些东西,如果有比我更了解 Windows 的人能解释为什么会这样,我将不胜感激。
【问题讨论】: