-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");
}

程序打印 12 作为 domi1 的大小和 8 作为 domi2 的大小。这是为什么?我感谢您的帮助!

4

1 回答 1

-1

因为Packing and byte alignment
一般的答案是编译器可以自由地在成员之间添加填充以用于对齐目的。或者我们可以这样说,您可能有一个编译器将所有内容对齐到 8 个字节。第一个结构分配的内存为- 4 4 4
第二个结构- 单个 4char和 4int

于 2012-10-20T14:24:03.597 回答