앞서 포스팅한 자료와 마찬가지로 다음과같은 구조체를 만들어보면 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(Unman..
다른 언어로 작성된 코드와 같은 기존코드, DLL, COM 프로젝트를 사용하다보면 고정크기의 배열을 사용해야 할 때가 있다. C# 1.1까지의 경우 고정크기를 사용하지 못하였다. 예를들어 다음과 같이 구조체를 선언하였을 경우 public struct MyArray { public char[] pathName; private int reserved; } 구조체의 크기는 8바이트가 된다. pathName배열의 경우 힙에 할당된 배열에 대한 참조가 된다.(포인터의 역할) 4바이트라는 것이다. 이러한 문제점을 해결하기 위해 C# 2.0부터는 fixed 문을 사용하여 고정크기의 배열을 만들 수 있게 하였다. public struct MyArray { public fixed char pathName[128]; } ..