티스토리 뷰


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

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으로 잡히는것을 확인할 수 있다.

#첨부 : MarshalAsAttribute
반응형
댓글