C#中的结构大小无效

时间:2014-02-01 22:09:09

标签: c#

我有以下C#结构:

[StructLayout(LayoutKind.Sequential)]
internal struct MY_STRUCT
{
     public uint A;
     public IntPtr B;
     public uint C;
}

我有一个大小为uint的Windows Server 2008 R2 64位平台,其中 4 字节,IntPtr的大小为 8 bytes。

然后,为什么当我打电话给Marshal.SizeOf(typeof(MY_STRUCT))时,我得到的是24而不是16?请帮忙。

1 个答案:

答案 0 :(得分:9)

您需要设置StructLayout属性的Pack属性。

我认为默认值取决于平台,在x64上等于8。获得16个字节:

[StructLayout(LayoutKind.Sequential, Pack=4)]
internal struct MY_STRUCT
{
     public uint A;
     public IntPtr B;
     public uint C;
}