c++ - 一个union需要多少内存

标签 c++ c

<分区>

我有以下 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; 

内存将分配为:

enter image description here

请注意 ci 是如何重叠的。事实上 ci 的第一个字节。

关于c++ - 一个union需要多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074239/

相关文章:

c++ - 原生 C++ 中的类 C# 属性?

c++ - ws2_32.lib vs. libws2_32.a,有什么区别以及如何将 libws2_32 链接到 NB 项目?

c++ - 纯虚函数覆盖虚函数

c - fgetc 函数无法正常工作

c - gcc mingw 在与程序集结合时给出垃圾输出

c++ - 为什么在临时对象中传递成员地址有效?

c++ - 在 Linux 中查找函数签名

c - 改变可变参数

c - 在尝试理解指针时,我有以下问题

c - 如何退出字符计数程序(我使用的是dev c++)