alignment


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

目的

境界合わせに付いて知る

コード

#include <stdio.h>

struct A {
  char a1;
  int a2;
  char a3;
};

struct B {
  char a1;
  char a3;
  int a2;
};

int
main()
{
  printf("A=%d B=%d\n", sizeof(struct A), sizeof(struct B));
  return (0);
}

実行

A=12 B=8
# 本来ならば構造体Aと構造体Bのサイズは同じはずであるしかし32bit環境では4byteずつalignmentされるため
# 構造体Aの方は要素ごとにalignmentされ構造体Bの方はa1とa3がまとめてalignmentされるためこのような結果になる
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。