「メモリアライメント」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 2行目: | 2行目: | ||
この要件は[[コンピューター]]や[[OS]]、[[ミドルウェア]]、[[ライブラリ]]などにより異なります。昨今ではメモリアライメントを[[プログラマー]]がまったく意識しなくても良い環境も存在します。 | この要件は[[コンピューター]]や[[OS]]、[[ミドルウェア]]、[[ライブラリ]]などにより異なります。昨今ではメモリアライメントを[[プログラマー]]がまったく意識しなくても良い環境も存在します。 | ||
例えば、4バイトの整数は4バイト境界、つまりアドレスが4で割り切れる位置に配置されるべきです。 | 例えば、4バイトの整数は4バイト境界、つまりアドレスが4で割り切れる位置に配置されるべきです。 | ||
アライメントの数字はシステムにより異なります。昨今の[[パソコン]]では4バイト境界が主流であり、[[ビデオカード]]では16バイト境界が主流です。 | アライメントの数字はシステムにより異なります。昨今の[[パソコン]]では4バイト境界が主流であり、[[ビデオカード]]では16バイト境界が主流です。 | ||
== メモリパディング == | |||
メモリアライメントを調整するために無駄なデータ(や構造体にダミー変数)を挿入することを「メモリパディング」といいます。例えば4バイト境界の場合、<code>char</code>(1バイト)の後に<code>int</code>(4バイト)が来る場合、<code>char</code>の後に3バイトの無駄なデータ(パディング)を挿入します。これにより、<code>int</code>が4バイト境界に配置されます。 | メモリアライメントを調整するために無駄なデータ(や構造体にダミー変数)を挿入することを「メモリパディング」といいます。例えば4バイト境界の場合、<code>char</code>(1バイト)の後に<code>int</code>(4バイト)が来る場合、<code>char</code>の後に3バイトの無駄なデータ(パディング)を挿入します。これにより、<code>int</code>が4バイト境界に配置されます。 | ||