alignment

目的

境界合わせに付いて知る

コード

#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されるためこのような結果になる
最終更新:2008年04月07日 01:29
ツールボックス

下から選んでください:

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