「メモリアライメント」の版間の差分

編集の要約なし
編集の要約なし
1行目: 1行目:
'''メモリアライメント'''とは、[[データ]]が[[メモリ]]の特定の位置(通称は特定のバイト境界)に配置されるべきであるという要件を指します。
'''メモリアライメント'''とは、ある[[コンピューター]]において[[データ]]が[[メモリ]]の特定の位置(通称は特定のバイト境界)に配置されるべきであるという要件、たとえば「int型が格納されるメモリのアドレスは4で割り切れること」などといった仕様を指します。


この要件は[[コンピューター]]や[[OS]]、[[ミドルウェア]]、[[ライブラリ]]などにより異なります。昨今ではメモリアライメントを[[プログラマー]]がまったく意識しなくても良い環境も存在します。
この要件は[[コンピューター]]や[[OS]]、[[ミドルウェア]]、[[ライブラリ]]などにより異なります。


例えば、4バイトの整数は4バイト境界、つまりアドレスが4で割り切れる位置に配置されるべきです。
なお、昨今の[[パソコン]]などではメモリアライメントを[[プログラマー]]がまったく意識しなくても勝手にうまいことやってくれるものがほとんどです。一方で[[プログラマブルシェーダー]]では勝手にやってくれないものがほとんどです。
アライメントの数字はシステムにより異なります。昨今の[[パソコン]]では4バイト境界が主流であり、[[ビデオカード]]では16バイト境界が主流です。
 
昨今の[[パソコン]]の[[CPU]]では4バイト境界が主流であり、[[ビデオカード]]の[[GPU]]では16バイト境界が主流です。


== メモリパディング ==
== メモリパディング ==