小编use*_*516的帖子

Marshal.SizeOf在包含guid的结构上提供了额外的字节

我有几个具有顺序布局的结构:

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的倍数.

我怎样才能避免这个"问题"?

非常感谢!

c# size struct guid marshalling

11
推荐指数
1
解决办法
2013
查看次数

标签 统计

c# ×1

guid ×1

marshalling ×1

size ×1

struct ×1