たとえば、int ではなく int32、uint16 など、明示的な幅を持つ型のみを使用するとします。
A byte will always take 8 bits and will be 8 bit aligned
A short will always take 16 bits and will be 16 bit aligned
An int will always take 32 bits and will be 32 bit aligned
A long int will always take 64 bits and will be 64 bit aligned
A float will always take 32 bits and will be 32 bit aligned
A double will always take 64 bits and will be 64 bit aligned
--- また、オプションでこれら 3 つが最適に機能するのは、次の場合です。
A 64bit SIMD datatype will always be 8 byte aligned
A 128bit SIMD datatype will always be 16 byte aligned
A 256bit SIMD datatype will always be 32 byte aligned
- - そして最後に:
A cache page will always be multiple of 32 bytes // e.g. 32 or 64 bytes
もちろん、すべてのハードウェア プラットフォームを意味するわけではありません。x86 /x64 と ARM v7/v8 のみに関心があります。