我有几个具有顺序布局的结构:
struct S1
{
Guid id;
}
struct S2
{
Guid id;
short s;
}
struct S3
{
Guid id;
short s;
short t;
}
调用Marshal.SizeOf
上述结构类型,我得到:
Size:
S1 = 16, as expected.
S2 = 20, copied an instance to a byte array, it only occupies first 18 bytes.
S3 = 20.
我的问题是为什么 S2 的大小是 20 而不是 18。这个问题只有Guid
在结构中才会出现。
抱歉,无法从 msdn 找到任何有用的信息。我知道Marshal.SizeOf
给出了该类型将在内存中占用的空间大小,但我想知道为什么它需要 2 个额外的字节来使大小成为 4 的倍数。
我怎样才能避免这个“问题”?
非常感谢!