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