我有以下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?请帮忙。
答案 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;
}