<分区>
我有以下 union
typedef union rem{
int addr;
char addrbuf[32];
} foo;
union 上的 sizeof 提供以下输出
foo addr;
printf("size is: %d\n",sizeof addr);
大小是:32
这是否意味着 union 在定义时分配或需要等于 union 中最大元素的内存?
<分区>
我有以下 union
typedef union rem{
int addr;
char addrbuf[32];
} foo;
union 上的 sizeof 提供以下输出
foo addr;
printf("size is: %d\n",sizeof addr);
大小是:32
这是否意味着 union 在定义时分配或需要等于 union 中最大元素的内存?
最佳答案
Does it mean that a union allocates or needs the memory equal to biggest element in the union at definition ?
是的。分配最大成员的内存。这就是 union
的成员存储在同一位置的原因。
假设 int
需要 4 个字节,用于 union
union{
char c;
int i;
} U;
内存将分配为:
请注意 c
和 i
是如何重叠的。事实上 c
是 i
的第一个字节。
关于c++ - 一个union需要多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074239/