본문 바로가기
개발언어/C#

[C#] 고정크기배열 사용방법 #MarshalAs

by 창용이랑 2020. 11. 3.
728x90

앞서 포스팅한 자료와 마찬가지로 다음과같은 구조체를 만들어보면

public struct MyArray

{

    public char[] charArray;

    public string str;

}


크기는 8이 된다.


fixed키워드를 사용하면 배열의 크기를 고정할 수 있지만, 안전하지 않은 코드(unsafe)영역으로 지정해야한다는 문제가 있다.

MarshalAs키워드를 사용해 고정크기 배열 (혹은 고정크기 문자열)을 사용할 수 있다.

[StructLayout(LayoutKind.Sequential)]
public struct MyArray

{

    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]

    public char[] charArray;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]

    public string str;

}

위와같이 MarshalAs를 사용해 SizeConst (크기) 를 조절할 수 있다.

예상되지만, 위 구조체의 크기는 150으로 잡히는것을 확인할 수 있다.