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;

posted on 2012-10-19 23:00  Mr_李  阅读(467)  评论(2)    收藏  举报

导航