我有这样一个结构:
[StructLayout(LayoutKind.Sequential, Pack = 8)]
unsafe struct MyStruct_t
{
public UInt32 ulID;
public fixed Byte xValue[32];
}
然后我运行以下命令来获取大小:
Console.WriteLine("Marshal.SizeOf(typeof(MyStruct_t))= {0}", Marshal.SizeOf(typeof(MyStruct_t)));
答案始终如一。
Marshal.SizeOf(typeof(MyStruct_t))= 36
我原本期望的是40。我错过了什么吗?在Pack=8的含义上,有些地方我不理解吗?
ulID
字段在4字节边界上对齐,这比Pack字段指定的8字节边界要小。 - Markiian Benovskyi