C#求结构体字节大小,求得的结果值比真实值大1,这是为什么?有修改方案吗

C#求结构体字节大小,求得的结果值比真实值大1,这是为什么?有修改方案吗
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct StructX
{
    public int a1;                 
    public int b;                    
    public int c;                   
    public int d;                      
    public float e;                
    public float f;               
    public float g;            
    public uint h;
    public ulong i;                   
    public byte j;               
    public byte[] k;
    public uint[] l;
};
int size = Marshal.SizeOf(typeof(StructX));
运行结果是57,想要的结果是56

本来就是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字节
};


你这个k和l占几个字节啊?数组没有写大小