結構與聯(lián)盟之間的區(qū)別是否有任何好的例子來區(qū)分a struct和a union?基本上我知道它struct使用其成員的所有內存并union使用最大的成員內存空間。是否有其他操作系統(tǒng)級別的差異?
3 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
這是簡短的回答:結構是一個記錄結構:結構中的每個元素分配新的空間。所以,像一個結構
struct foobarbazquux_t { int foo; long bar; double baz; long double quux;}
(sizeof(int)+sizeof(long)+sizeof(double)+sizeof(long double))
為每個實例在內存中至少分配字節(jié)數。(“至少”因為體系結構對齊約束可能會強制編譯器填充結構。)
另一方面,
union foobarbazquux_u { int foo; long bar; double baz; long double quux;}
分配一塊內存并給它四個別名。因此sizeof(union foobarbazquux_u) ≥ max((sizeof(int),sizeof(long),sizeof(double),sizeof(long double))
,再次有可能添加一些對齊。
- 3 回答
- 0 關注
- 443 瀏覽
添加回答
舉報
0/150
提交
取消