结构与联盟之间的区别是否有任何好的例子来区分a struct和a union?基本上我知道它struct使用其成员的所有内存并union使用最大的成员内存空间。是否有其他操作系统级别的差异?
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))
为每个实例在内存中至少分配字节数。(“至少”因为体系结构对齐约束可能会强制编译器填充结构。)
另一方面,
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 关注
- 423 浏览
添加回答
举报
0/150
提交
取消