Unsafe modifier
Peponi │ 11/11/2024 │ 2m
C#
SyntaxKeywordModifier
Unsafe modifier
11/11/2024
2m
Peponi
C#
SyntaxKeywordModifier
1. Introduction
unsafe
한정자는 안전하지 않은
컨텍스트를 나타낸다. 일반적인 C# 코드는 CLR에서 확인이 가능하고 관리되는 객체를 뜻하는 데 반해 unsafe
한정자를 적용하는 경우 안전하지 않은 컨텍스트로 간주된다. 따라서 코드 무결성은 작성자에 의해 확인되어야 한다.
unsafe
한정자를 사용하면 다음과 같은 기능을 사용할 수 있다.
- 포인터
- 고정 크기 버퍼
- 함수 포인터
unsafe
한정자가 사용되는 코드를 컴파일 하는 경우 컴파일러 옵션 AllowUnsafeBlocks
를 true
로 설정해주어야 한다.
2. Example
static unsafe int Sum(int* value1, int* value2) => *value1 + *value2;
int[] a = new int[3] { 1, 5, 10 };
unsafe
{
fixed (int* pointer = a)
{
int* ptr = pointer;
Console.WriteLine(*ptr); // 1
ptr += 1; // 다음 위치로
Console.WriteLine(*ptr); // 5
*ptr += 1; // 값에 +1
Console.WriteLine(*ptr); // 6
Console.WriteLine(Sum(ptr, ptr + 1)); // 16
}
}
Console.WriteLine(string.Join(", ", a)); // 1, 6, 10