36樓 bouluo505 (
bouluo)
回復于
2005-03-22 13:00:21 得分
7
struct{
short a1;
short a2;
short a3;
}A
struct{
long a1;
short a2;
}B
sizeof( A)=6, sizeof( B)=8,為什么?
注:sizeof(short)=2,sizeof(long)=4
________________________________________
[C++]中:::在缺省的情況下(編譯器都會(huì )將結構體中的內容在自然邊界上對齊):
sizeof(short)=2 為單字,即要在偶數地址上對齊!
假設a1的地址為:0x00000000h,則a2為0x00000002h,a3為0x00000004h(以上都為相對地址)
所以sizeof(A)=4+2=6;
對于B,sizeof(long)=4;
假設a1的地址為:0x00000000h,而sizeof(short)=2,,即要在偶數地址上對齊!
所以a2的地址為: 0x00000004h
所以sizeof(B)=4+2=6;
但VC++的編譯器不同值是8?。ò醋铋L(cháng)對齊)這不符合標準