首页  »   C++

非一般对齐

网友分享于:2013-06-25  浏览:11次
特殊对齐
C/C++ code


//结构体中嵌套union,          union中嵌套 union, 书上没有讲解,很少提到这个东西,

 struct对齐倒是很多


struct A
{
char a;
float b;
union B
{
char c[7];
int  d;

}b;
};

中间有union, 一般的对齐我会,只是有嵌套union的不会

union B 占7个字节,                其最大对齐方式为4

然后和A中的那些成员对齐

按照什么规则???








------解决方案--------------------
UNION B不是占7个字节,而是占8个字节,因为对其方式是4,然后把这8个字节放进去。
struct A 里面的3个变量大小分别是 1 4 8
对齐为1+3+4+8=16;
另外4楼的那个例子楼主也搞错了
sizeof(A):

1+1 + 4 + 5+ 1+ 2 +2==16

是1+3+4+(5+1+2)=16;
------解决方案--------------------
union的大小也要对齐, 7字节char,4/8字节情况下对齐到8.

相关解决方案

最新解决方案