본문 바로가기

워크/C# 2.0

고정 크기 버퍼 (Fixed Size Buffers)

고정 크기 버퍼는 C#에서 일반적으로 사용되는 것은 아니지만, 성능이 중요한 시나리오나 특정 메모리 레이아웃이 필요할 때 유용합니다. 고정 크기 버퍼를 사용하려면 코드를 unsafe로 표시해야 합니다. 이는 포인터 연산이 가능한 영역이므로 주의가 필요합니다.

아래는 고정 크기 버퍼의 사용 예제입니다:

using System;

public struct FixedBufferExample
{
    // 고정 크기 버퍼 정의. 이 버퍼는 100개의 int 값을 저장할 수 있습니다.
    public unsafe fixed int buffer[100];
}

public class Program
{
    public unsafe static void Main()
    {
        FixedBufferExample example = new FixedBufferExample();

        // 고정 크기 버퍼에 접근하기 위해 fixed 문 사용
        fixed (int* p = example.buffer)
        {
            // 처음 5개 원소에 값 할당
            for (int i = 0; i < 5; i++)
            {
                p[i] = i * i; // 제곱 값을 저장
            }

            // 처음 5개 원소 출력
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine(p[i]);
            }
        }
    }
}
이 코드를 실행하면 0, 1, 4, 9, 16의 값을 출력합니다.

이 예제에서 FixedBufferExample 구조체는 100개의 정수 값을 저장할 수 있는 고정 크기 버퍼를 정의합니다. 메인 함수에서 이 버퍼의 첫 5개 원소에 값을 할당하고 출력합니다.

고정 크기 버퍼와 unsafe 코드는 C#에서 일반적으로 권장되지 않는 기능이므로, 필요한 특정 시나리오에서만 사용해야 합니다. unsafe 코드는 기본적으로 안전하지 않다고 판단되기 때문에, 사용할 때 주의가 필요합니다.

 

'워크 > C# 2.0' 카테고리의 다른 글

부분 타입 (Partial Types)  (0) 2023.08.25
Covariance와 Contravariance  (0) 2023.08.25
반복자 (Iterators)  (0) 2023.08.25
익명 메서드 (Anonymous Methods)  (0) 2023.08.25
Nullable 타입  (0) 2023.08.25