http://www.alex-ionescu.com/?p=50 .
上記の投稿を読みました。著者は、Windows x64 が単一リンク リストの例で 44 ビットの仮想メモリ アドレスのみをサポートする理由を説明しています。
struct { // 8-byte header ULONGLONG Depth:16; ULONGLONG Sequence:9; ULONGLONG NextEntry:39; } Header8;
最初の犠牲は、シーケンス番号のスペースを 16 ビットではなく 9 ビットに減らし、リストが達成できる最大シーケンス番号を減らすことでした。これでもポインター用に 39 ビットしか残っていません。これは 32 ビットよりも平凡な改善です。割り当て時に構造体を強制的に 16 バイト アラインすることで、最下位ビットを常に 0 と見なすことができるようになったため、さらに 4 ビットを獲得できました。
ああ、私は理解できません。
「割り当て時に構造体を強制的に 16 バイト アラインすることで、最下位ビットを常に 0 と見なすことができるようになったため、さらに 4 ビットを獲得できました。」意味?