다른 언어로 작성된 코드와 같은 기존코드, DLL, COM 프로젝트를 사용하다보면 고정크기의 배열을 사용해야 할 때가 있다. { public char[] pathName; private int reserved; } { public fixed char pathName[128]; }
C# 1.1까지의 경우 고정크기를 사용하지 못하였다.
예를들어 다음과 같이 구조체를 선언하였을 경우public struct MyArray
구조체의 크기는 8바이트가 된다.
pathName배열의 경우 힙에 할당된 배열에 대한 참조가 된다.(포인터의 역할)
4바이트라는 것이다.
이러한 문제점을 해결하기 위해 C# 2.0부터는 fixed 문을 사용하여 고정크기의 배열을 만들 수 있게 하였다.public struct MyArray
고정크기 char버퍼는 인코딩과 상관없이 항상 2바이트씩을 저장하게 된다.
따라서 위와 같은 구조체의 크기는 128바이트가 아닌 256바이트로 잡히게된다.
또한 fixed문을 사용하기 위해서는 반드시 usafe 영역에 있어야 한다.
첨부 : fixed 문
728x90
반응형
'C#' 카테고리의 다른 글
| C#에서 문자열 앞에 '@' 을 붙이는 것 (0) | 2012.09.13 |
|---|---|
| 특정 사이트의 HTML문서 긁어오기 (0) | 2012.08.07 |
| 고정크기배열 사용방법 #MarshalAs (0) | 2012.08.07 |
| CapsLock 상태 확인하는 방법 (0) | 2012.08.07 |
| 컴퓨터의 Beep음을 내는 방법 (0) | 2012.08.07 |