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으로 잡히는것을 확인할 수 있다.
'개발언어 > C#' 카테고리의 다른 글
[C#] [Flag] Enum Attribute는 무엇을 의미합니까? (0) | 2020.11.04 |
---|---|
[C#] C# 코딩 표준 (0) | 2020.11.04 |
[C#] x86/x64 환경에 따라 달라지는 P/Invoke 함수의 export 이름 (0) | 2020.11.03 |
[C#] WinAPI(Kernel32 dll) 사용하기 (0) | 2020.11.03 |
[C#] if ~else if를 한 줄로 '삼항 연산자' (0) | 2020.11.03 |