本来就是57啊 ,Pack = 1 1字节对齐
那么byte j 就是1字节对把,其他的怎么算都是偶数字节
所以先不论k,l是不是按intptr算,也不论57对或不对,至少结果是个奇数
[StructLayout(LayoutKind.Sequential, Pack = 1)]
//按一字节对齐,基本就是数据类型的原始字节数的和
public struct StructX
{
//4+4+4+4+4+4+4+4+8+1+8+8=57
public int a1;//32位4字节
public int b;//32位4字节
public int c;//32位4字节
public int d;//32位4字节
public float e;//单精浮点4字节
public float f;//单精浮点4字节
public float g;//单精浮点4字节
public uint h;//无符号int 4字节
public ulong i;//无符号long 64位 8字节
public byte j;//1字节
public IntPtr k;//假设按intptr算8字节
public IntPtr l;//假设按intptr算8字节
};