このページでは、記憶装置のデータの読み書きに関する「アラインメント」を取り上げます。
記憶装置のデータを読み書きするときに、記憶装置内のデータの位置や、データの大きさを調整することです。
「アラインメント (alignment)」という英単語には、「調整」や「整列」などといった意味があり、さまざまな場面で用いられます。
たとえば、メモリのアクセスを 4バイト単位で行う環境で、1002 という(4 の倍数でない)メモリアドレスにあるデータを読み込むには(そのデータは 1002~1005 の 4バイト分の範囲にある)、1000~1003 と 1004~1007 という2つの領域にアクセスしなければなりません。ここからうまく目的のデータを取り出すためには追加のコストが掛かります。あるいはこのようなアクセスをエラー(アラインメントエラー)とする場合もあります。
そこで、メモリにデータを書き込むときに、データの大きさを 4バイトの倍数になるようにし(不足分をパディングで埋める)、4 の倍数のメモリアドレスにデータの先頭が来るように調整します。
C言語によるアラインメントに関する解説がC言語編37章にあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |