メモリアラインメントとは?
メモリアラインメントとは、データをその大きさの倍数のアドレスに配置する制約。境界に合っていれば1回のメモリアクセスで読めるが、またぐと2回に分かれて遅くなるか、アーキテクチャによっては例外が発生する。コンパイラが構造体メンバの間に詰め物(パディング)を入れて境界を揃える。
めもりあらいんめんと
メモリアラインメントの意味
データをその大きさの倍数のアドレスに配置する制約。境界に合っていれば1回のメモリアクセスで読めるが、またぐと2回に分かれて遅くなるか、アーキテクチャによっては例外が発生する。コンパイラが構造体メンバの間に詰め物(パディング)を入れて境界を揃える。
メモリアラインメントの具体例
1バイトのフラグ・4バイトの整数・1バイトの区分をこの順で並べた構造体は、パディングを含めて12バイトになる。メンバを大きい順に並べ替えると8バイトに収まり、数千万件を扱うキャッシュでは実メモリ使用量とキャッシュ効率がはっきり変わる。
メモリアラインメントは試験でどう引っ掛けられる?
構造体のサイズは各メンバのサイズの単純合計にならない、という点が見落とされやすい。またパディングの入り方は処理系依存なので、構造体をそのままファイルや通信路へ書き出すと環境間で互換性が崩れる。
メモリアラインメントと関連する用語
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。