구조체 안에 구조체 배열 추가시 문제가 되나여?

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public class SMALL_PACKET
{
    public byte onoff;
    public short trig_lv;
    public byte fileter_min;
    public byte filter_max;
    public byte sensor_type;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct BIG_PACKET
{
    public int packettype;

    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    public SMALL_PACKET[] ch;
}

이렇게 선언하고

int nn = Marshal.SizeOf(typeof(SMALL_PACKET)); 

하면은 6이 나옵니다.

그런데 아래와 같이 하면,

int ns = Marshal.SizeOf(typeof(BIG_PACKET));

28이 나와야 하는것 아난가여?

값이 이상하게 나오고 있습니다.

혹시 제가 잘못 알고 있는것인지요?

이것을 해결하기 위해서 어떻게 해야 되는지 알려주시면 감사하겠습니다.

1개의 좋아요

소스코드를

```csharp
코드
```

이렇게 넣어주시면 가시성이 좋아집니다. 참고 바랄께요.

1개의 좋아요

참조는 64비트의 경우 8바이트이므로 SizeConst 개수만큼 계산해서 32에 4가 더해져서 36이 나올것 같네요. 이게 맞습니다.

제가 잘못 햇엇네요… 해결햇습니다. 감사합니다.

1개의 좋아요