MW211 EXIT

devlog
C言語/アライメントサイズの確認
2012年10月20日
アライメントサイズはコンパイラによって定義されているようだが
その実体定義の場所がわからない。

えいっ、こうなったら実地テストだ、ってのが以下。

char型の次にint型を置いた構造体を用意して、sizeof()で長さを計る。
┌──────────────────────────────────────┐
│struct {                                                                    │
│    char  a;                                                                │
│    int   b;                                                                │
│} z;                                                                        │
│printf("%d", sizeof(z));                                                    │
└──────────────────────────────────────┘
アライメントがなければ(「1」ならば)、「1+4=5」なわけだが、
結果が「8」だった。
つまり、「8=4+4」。
そうアライメントは「4」だ。
分類:C/C++