这个结构体的大小为什么是24

来源:百度知道 编辑:UC知道 时间:2024/06/16 13:15:57
struct MyStruct{
char dda;
double dda1;
int type ;
};

楼上说的不对....

首先,没有类似的标准规定x86架构以8字节单位对齐。
其次,若改为
struct MyStruct{
char dda;
int type;
double dda1;
};
即将char和int写在前面,整个结构就变成了16。

最后,关键在于double占8字节,而每个类型都需要已自己的size对齐的。
char 占用一个字节,后空七个。以便double从一个以8对齐的地址开始记录。
最后一个int为4。最后根据方框原则,int后面空出4个位置来。于是结果24

因为默认的对齐方式是8字节对齐
char 占用一个字节,但是后面是 double
所以空了7个字节 然后是double 的内容
最后的int 本来是4字节的,但是要结束了,就又空了
4个字节。

你在前面加
#pragma pack(1)
就是不空的方式,那么大小就是 1+8+4=13
VB6的结构就是不空的。

看看#pragma pack 的帮助文件吧。