struct与union内存大小计算
我们知道union是内存共享机制,在确定内存大小之前,内存对齐方式是选择union成员中字节最大的那个,然后根据对齐大小分配对齐每个成员算出分配的空间,最后实际分配的空间要是对齐方式字节最大的那个的整数倍;
struct也是同样的分配方式,先算出对齐大小,对齐大小也取决于struct成员中字节最大的那个;然后根据每个成员的对齐大小对齐每个成员算出分配的空间;最后算出struct实际分配的空间,满足struct对齐大小的整数倍。
这里面如果struct包括union类型的成员时,对齐大小也要考虑到union中的对齐大小,即也要与union中的对齐大小作比较。比如:
union DATE
{
long i;
char a[9];
double c;
};
struct data
{
int a;
DATE dt;
};
上面struct的对齐大小是为8;
浙公网安备 33010602011771号