「コンパイラ・スクリ ..
873:デフォルトの名無しさん
05/01/14 14:02:03
>>872
かなり複雑だよ
typedef struct {
char c[1];
short s;
char cc[1];
} C;
これのsizeof(C)は6。
Cのアラインメントはshortを持つので2になる。
これをメンバに持つ構造体を作るとわかる。
typedef struct {
C c[3];
}CC;
これで sizeof(CC) すると 18。
次に
typedef struct {
char c[1];
short s;
char cc[1];
int i;
} D;
これのsizeof(C)は12。
んで、アラインメントはintを含んでるので4。
typedef struct {
D d[3];
}DD;
sizeof(DD) => 36
つまり構造体はその中のメンバの基本型のサイズが関係する
例えばcharしか持たない構造体はアラインメントが1になる
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5050日前に更新/228 KB
担当:undef