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