-2

重複の可能性:
Cの構造体の実際のサイズはいくつですか

次のプログラムをCで作成しましたが、実行可能ファイルが出力する構造体のサイズについて少し混乱しています。コードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>

struct domi1{
   char x;
   int c;
   char y;
};

struct domi2{
   char x;
   char y;
   int c;
};

main(){

 printf("The size of domi1 is: %d\n", sizeof(struct domi1));
 printf("The size of domi2 is: %d\n\n", sizeof(struct domi2));

 system("pause");
}

プログラムは、domi1のサイズとして12を出力し、domi2のサイズとして8を出力します。何故ですか?私はあなたの助けに感謝します!

4

1 に答える 1

-1

なぜなら、Packing and byte alignment
一般的な答えは、コンパイラーがアライメントの目的でメンバー間にパディングを自由に追加できるということです。または、すべてを 8 バイトに揃えるコンパイラがあるかもしれません。最初の構造体に割り当てられたメモリ as- 4 4 4
2 番目の struct- single 両方charで 4 およびint

于 2012-10-20T14:24:03.597 に答える