データ構造アライメント
データ構造アライメント（データこうぞうアライメント、）は、コンピュータのメモリ（主記憶装置）内のデータにアクセス（読み書き）する際に、メモリ上の位置の調整を行うことである。

そこには、別々だが関連する2つの問題、すなわち、データ整列とデータ構造パディングがある。最新のコンピュータがメモリアドレスを読み書きする場合には、ワードサイズのチャンク（32ビットシステムの場合は4バイトのチャンク）単位で実行される。データ整列とは、ワードサイズの倍数に等しいメモリアドレスにデータを配置することであり、CPUがメモリを処理する方法によってシステムのパフォーマンスが向上する。データを整列させるには、最後のデータ構造の終端部分と次のデータ構造の開始部分の間に未使用のバイトを挿入する必要があり、これを「データ構造パディング」という。

例えば、コンピュータのワードサイズが4バイトの場合（バイトは、ほとんどのコンピュータで8ビットを意味するが、一部のシステムでは異なる可能性がある）、読み取るデータは4の倍数のメモリアドレスにある必要がある。例えば、データが16番地ではなく14番地から開始する場合、コンピュータは、4バイトのチャンクを2つ以上読み取り、要求されたデータが読み出される前に何らかの計算を実行しなければならないか、アライメントエラーを生成する可能性がある。よって、その前のデータ構造の終端が13番地にあったとしても、次のデータ構造は16番地から始める必要がある。そのため、2つのパディングバイトが2つのデータ構造の間の14番地と15番地に挿入される。

データ構造のアライメントは現代の全てのコンピュータにとって基本的な問題であるが、多くのコンピュータ言語およびコンピュータ言語の実装がデータ整列を自動的に処理する。Ada、PL/I、C言語（C11以降）・C++（C++11以降）、D言語、Rust、アセンブリ言語は、特定の特殊な状況で有用なデータ構造のパディングを少なくとも部分的に制御することを可能にしている。
Q5830907
主記憶装置
Concept
Q625642
ワード
Concept
Q225147
32ビット
Concept
Q8799
バイト
Concept
Q8805
ビット
Concept
Q11327642
アライメントエラー
Concept
Q154755
Ada
MEDIA
Q223433
PL/I
MEDIA
Q15777
C言語
Concept
Q4035552
C11
MEDIA
Q2407
C++
MEDIA
Q1061570
C++11
Concept
Q319268
D言語
MEDIA
Q575650
Rust
MEDIA
Q165436
アセンブリ言語
Concept
Q1413745
データ構造アライメント
UNK
2020-02-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
2
DATE
2032-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
32
DATE
2020-04-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
4
DATE
2020-04-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
4
DATE
2020-08-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
8
DATE
2020-04-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
4
DATE
2016-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
16
DATE
2014-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
14
DATE
2020-04-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
4
DATE
2020-02-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
2
DATE
2013-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
13
DATE
2016-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
16
DATE
2020-02-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
2
DATE
2020-02-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
2
DATE
2014-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
14
DATE
2015-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
15
DATE
2011-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
11
DATE
2011-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
11
DATE
+2^^http://www.w3.org/2001/XMLSchema#decimal
2
NUMBER
+32^^http://www.w3.org/2001/XMLSchema#decimal
32
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+8^^http://www.w3.org/2001/XMLSchema#decimal
8
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+16^^http://www.w3.org/2001/XMLSchema#decimal
16
NUMBER
+14^^http://www.w3.org/2001/XMLSchema#decimal
14
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+2^^http://www.w3.org/2001/XMLSchema#decimal
2
NUMBER
+13^^http://www.w3.org/2001/XMLSchema#decimal
13
NUMBER
+16^^http://www.w3.org/2001/XMLSchema#decimal
16
NUMBER
+2^^http://www.w3.org/2001/XMLSchema#decimal
2
NUMBER
+2^^http://www.w3.org/2001/XMLSchema#decimal
2
NUMBER
+14^^http://www.w3.org/2001/XMLSchema#decimal
14
NUMBER
+15^^http://www.w3.org/2001/XMLSchema#decimal
15
NUMBER
+11^^http://www.w3.org/2001/XMLSchema#decimal
11
NUMBER
++11^^http://www.w3.org/2001/XMLSchema#decimal
+11
NUMBER
influenced by
edition or translation of
influenced by
influenced by
influenced by