LP64 データ型モデルでは long およびポインタフィールドが 64 ビットに拡張されるため、コンパイラが構造体にパディングを追加して、境界を整列することがあります。SPARCV9 ABI と amd64 ABI のどちらでも、構造体の型はすべて、最低でも構造体内での最大サイズに整列されます。構造体を再構成するための簡単な規則は、long とポインタのフィールドを構造体の先頭位置に移動して、残りのフィールドを整列し直すことです。通常はサイズの大きい方から順に整列しますが、どれほどうまく詰め込めるかによって異なります。次に例を示します。
struct bar { int i; long j; int k; char *p; }; /* sizeof (struct bar) = 32 */
より良い結果を得るには、次のコードを使用します。
struct bar { char *p; long j; int i; int k; }; /* sizeof (struct bar) = 24 */
基本的な型の整列は、i386 と amd64 ABI 間で異なります。「整列の問題」を参照してください。