看了很多关于结构体大小的文章,大部分都讲的很清楚。但是有一种,很多文章讲的不够明确:结构体中成员是double型。在32位系统中,double的本身字节对齐分两种:windows下是8字节对齐,linux下是4字节对齐。例如:
struct ss{
int a;
char b;
short c
double d;
int f;
}
如果按double是4字节对齐,sizeof(ss)就是20;如果按double是8字节对齐,sizeof(ss)就是24.
看了很多关于结构体大小的文章,大部分都讲的很清楚。但是有一种,很多文章讲的不够明确:结构体中成员是double型。在32位系统中,double的本身字节对齐分两种:windows下是8字节对齐,linux下是4字节对齐。例如:
struct ss{
int a;
char b;
short c
double d;
int f;
}
如果按double是4字节对齐,sizeof(ss)就是20;如果按double是8字节对齐,sizeof(ss)就是24.