【发布时间】:2011-06-01 14:07:03
【问题描述】:
http://www.alex-ionescu.com/?p=50。
我阅读了上面的帖子。作者通过单链表示例解释了为什么 Windows x64 只支持 44 位虚拟内存地址。
struct { // 8-byte header ULONGLONG Depth:16; ULONGLONG Sequence:9; ULONGLONG NextEntry:39; } Header8;要做的第一个牺牲是减少序列的空间 数字改为 9 位而不是 16 位,减少了最大序列 列表可以达到的数量。这仍然只剩下 39 位 指针 — 对 32 位的普通改进。通过强制 分配时结构为 16 字节对齐,可以多 4 位 赢了,因为现在可以始终假定底部位为 0。
哦,我不明白。
什么“通过在分配时强制结构为 16 字节对齐,可以再赢得 4 位,因为现在可以始终假定底部位为 0。”方法?
【问题讨论】:
-
我喜欢让我大吃一惊的问题。学习新东西总是很好。
标签: windows memory x86-64 memory-alignment virtual-address-space