结构数据存放时默认按4对齐,考虑以下程序,输出结果为:sizeof(A)=12
使用 #pragma pack,设置数据按1对齐,此时输出结果为:sizeof(A)=11
typedef
struct
_A
{
int x;
char z[7];
} A;
void main()
{
int len = sizeof(A);
printf("sizeof(A)=%d\n", len); // len = 12
}
{
int x;
char z[7];
} A;
void main()
{
int len = sizeof(A);
printf("sizeof(A)=%d\n", len); // len = 12
}
使用 #pragma pack,设置数据按1对齐,此时输出结果为:sizeof(A)=11
#pragma pack(push)
#pragma pack( 1 )
typedef struct _A
{
int x;
char z[7];
} A;
#pragma pack(pop)
void main()
{
int len = sizeof(A);
printf("sizeof(A)=%d\n", len); // len = 11
}
#pragma pack( 1 )
typedef struct _A
{
int x;
char z[7];
} A;
#pragma pack(pop)
void main()
{
int len = sizeof(A);
printf("sizeof(A)=%d\n", len); // len = 11
}