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

[复制链接]
查看11 | 回复2 | 2009-6-19 22:01:32 | 显示全部楼层 |阅读模式
struct MyStruct{
char dda;
double dda1;
int type ;
};

回复

使用道具 举报

千问 | 2009-6-19 22:01:32 | 显示全部楼层
楼上说的不对....首先,没有类似的标准规定x86架构以8字节单位对齐。其次,若改为struct MyStruct{ char dda; int type;double dda1; };即将char和int写在前面,整个结构就变成了16。最后,关键在于double占8字节,而每个类型都需要已自己的size对齐的。char 占用一个字节,后空七个。以便double从一个以8对齐的地址开始记录。最后一个int为4。最后根据方框原则,int后面空出4个位置来。于是结果24...
回复

使用道具 举报

千问 | 2009-6-19 22:01:32 | 显示全部楼层
因为默认的对齐方式是8字节对齐char 占用一个字节,但是后面是 double 所以空了7个字节 然后是double 的内容最后的int 本来是4字节的,但是要结束了,就又空了4个字节。你在前面加#pragma pack(1)就是不空的方式,那么大小就是 1+8+4=13VB6的结构就是不空的。看看#pragma ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行