typedef struct{
short age;
int money;
char c;
}Persoana;
int main(void){
Persoana *a = malloc(sizeof(Persoana));
printf("%ld %ld",sizeof(a->money),sizeof(a->age));
printf(" %ld\n",sizeof(*a)); } ~
代码打印" 4212" .4和2都可以但是如何12 ???
答案 0 :(得分:6)
这是为了演示编译器完成的填充问题。它(编译器)在这里做的是将结构的每个部分对齐到4字节字边界(=> 4 * 3 = 12字节),而不是将它们打包成9个字节。这是由编译器执行的,以允许数据成员访问,该访问遵循目标CPU内存访问模式。