【发布时间】:2014-03-01 08:43:27
【问题描述】:
我有一个 c++ 结构:
struct a
{
char b;
int c;
int d[100];
};
结构的大小应为 405 字节。
我看到结构的大小是 408 字节。原因是整数“c”之后的 8 个字节对齐。数组“d”应该从结构的第 6 个字节开始,而不是从第 9 个字节开始。
我使用了#pragma pack(1),但并没有解决问题。
我无法更改结构中字段的顺序。
你知道我该如何解决这个问题吗?
谢谢!
【问题讨论】:
-
使用哪个编译器?在哪个系统上?为什么需要这个?
-
Visual Studio 的默认编译器。视窗。我需要将此结构发送到远程计算机
-
问题是我发送的结构比期望的尺寸大
-
这是一个将它序列化并考虑字节序的想法。然后让它通过网络免费
-
使用 gcc 4.8 或 clang 3.5 sizeof(a) 是 405 字节 - 带有 pragma pack 指令。