#pragma pack和數據對齊問題
結構數據存放時默認按4對齊,考慮以下程序,輸出結果為:sizeof(A)=12
typedef struct _A


{
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對齊,此時輸出結果為:sizeof(A)=11


















posted on 2005-12-13 14:36 冰凍熱狗 閱讀(13231) 評論(9) 編輯 收藏 引用 所屬分類: 平臺核心