64,646
社区成员
发帖
与我相关
我的任务
分享
struct data1
{
long a;
int b[5];
char c;
}A;
struct data2
{
long d;
data1 e;
char f;
}B;
#pragma pack(4) //4字节对齐
struct data2
{
...
};
#pragma pack(8) //8字节对齐
...
#pragma pack //默认对齐方式,依赖于gcc编译器的参数配置
struct data1
{
long a;//[0...3]
int b[5];//[4.....23]
char c;//[24...27]
}A;
struct data2
{
long d;//[0...3]
data1 e;//[4.......31]
char f;//[32....35]
}B;
struct data1
{
long a; 8
int b[5]; 4 8+4 = 12
char c; 1 12 + 1 = 13 13 + 3 = 16 即sizeof(A) = 16
}A;
struct data2
{
long d; 8
data1 e; 16 8+ 16 = 24
char f; 1 16 + 1 = 17 17+15 = 32 即sizeof(B) = 32
}B;