我定义了如下结构
typedef struct
{
UINT i1;
UINT i2;//
UINT i3;
char s[6];
} mymsg;我用sizeof函数计算的长度为什么不对呢?int len = sizeof(mymsg);执行时len=20;
应该是18才对呀,
请问这是为什么啊?
typedef struct
{
UINT i1;
UINT i2;//
UINT i3;
char s[6];
} mymsg;我用sizeof函数计算的长度为什么不对呢?int len = sizeof(mymsg);执行时len=20;
应该是18才对呀,
请问这是为什么啊?
但必须是4的整数倍,
由此,共需8+3*4=12个字节!
但必须是4的整数倍,
由此,共需8+3*4=20个字节!
typedef struct
{
UINT i1;
UINT i2;//
UINT i3;
char s[6];
} mymsg;
#pragma pack()
这时候就是18了
#pragma pack(4)
typedef struct
{
UINT i1;
UINT i2;//
UINT i3;
char s[6];
} mymsg;
#pragma pack()
这时候就是20了
32位机至少用四个字节!char s[6]中虽然只需1*6=6个字节,
但必须是4的整数倍,
由此,共需8+3*4=20个字节!
setting->c/c++->category:code generation->struct member alignment
这里是设置字节对齐,你一定设置了8Byte*,所以char s[6];实际上所占用的空间是8,而不是6