シーケンシャルレイアウトの構造体がいくつかあります。
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のサイズが18ではなく20である理由です。この問題Guid
は、が構造体にある場合にのみ発生します。
申し訳ありませんが、msdnから有用な情報を見つけることができません。タイプがメモリ内で占めるスペースのサイズを指定することは知ってMarshal.SizeOf
いますが、サイズを4の倍数にするために2バイト余分に値する理由を知りたいです。
そして、どうすればこの「問題」を回避できますか?
どうもありがとう!