C# - unsafe와 fixed
2015. 2. 3. 11:23ㆍProgramming/Etc
C#에서는 기본적으로 관리되지 않는 메모리 조작은 할 수 없게 되어있는데
다음과 같은 옵션을 체크하면 포인터와 같이 메모리를 조작할 수 있다.
이 옵션 없이 unsafe 지시어를 사용하면 빌드 오류가 발생한다.
소스코드를 보면
unsafe 키워드 스코프 안에서
주소 및 포인터 사용을 하고 있다.
그럼 fixed 지시어는 무엇일까?
클래스가 인스턴스화 되면 CLR에 의해 언제든지 메모리가 이동될 수 있는데
이렇게 고정되지 않은 인스턴스를 포인터로 받아 사용하게 되면
언제든지 실행 중에 오류가 발생할 수 있다.
따라서 fixed 지시어를 사용하여 이 스코프 안에 코드를 넣으면 해당 코드에
들어간 변수 및 객체는 가비지 콜렉팅이 발생할 때 주소 재배치 대상이 아니게 된다.
상세한 내용은 MSDN 참조