10
我已经声明了一个联合分配变量“sample_union”4100字节,并作为分配4104个字节的结构的一部分作出相同的联合声明。为什么结构和工会之间的尺寸不匹配?
union test_size_union {
struct {
uint8_t type;
union {
uint8_t count;
uint8_t list;
};
uint16_t rc;
uint16_t arr_value[2048];
};
uint64_t first_dword;
}__attribute__((packed)) sample_union ;
将上面的联合放在结构内部分配4104字节。嗯,这不是项目需求,但我想知道为什么编译器在这两个声明中表现不同。
gcc版本:(GCC)4.9.2,x86_64的
平台:Linux,x86_64的
请注意,C++标准不允许使用匿名结构(GCC确实将它作为扩展提供)。 – user2079303
这主要功能: int main(void) { printf(“sample_union =%d \ n”的大小,sizeof(sample_union)); (“sample_struct的大小=%d \ n”,sizeof(sample_struct)); return 0; } 输出:sample_union的 大小= 4100 大小sample_struct = 4104 – user50
@JoachimPileborg的:该数组是类型的'uint16_t [2048]',所以占用了在大多数机器4096个字节。 – DarkDust