У меня есть несколько структур, которые имеют последовательный макет:
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.
И как я могу избежать этой "проблемы"?
Спасибо большое!