cod*_*001 2 c c++ struct sizeof
可能重复:
如何找到结构的大小?
结构的内存大小不同?
我使用以下结构进行网络通信,它在中间创建了许多不必要的字节.
它提供的大小与预期的8字节不同.
struct HttpPacket {
unsigned char x1;
union {
struct {
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
unsigned char bytes[7];
unsigned long num;
}
Run Code Online (Sandbox Code Playgroud)
并且以下给出了不同的大小,即使我从联合中删除了一个字段
struct HttpPacket {
unsigned char x1;
union {
struct {
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
unsigned long num;
}
Run Code Online (Sandbox Code Playgroud)
另外,一个更明显的例子
struct {
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
Run Code Online (Sandbox Code Playgroud)
它的大小为8,而不是7.我再添加一个字段,它仍然给出相同的大小
struct {
unsigned char EXTRAADDEDFIELD;
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙解决这个问题吗?
更新:我需要在传输数据包时保持格式,所以我想跳过这些填充