티스토리 뷰
앞서 포스팅한 자료와 마찬가지로 다음과같은 구조체를 만들어보면
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
반응형
댓글