본문 바로가기

C#

C# 고정 크기 버퍼(fixed size buffer) 사용

C#에서 고정 크기 버퍼(fixed size buffer)는 성능 최적화와 메모리 제어가 중요한 상황에서 유용합니다. 주로 unsafe 코드 블록 내에서 사용하며, 구조체 내부에 고정된 크기의 배열을 선언할 수 있습니다.

1. 고정 크기 버퍼 선언 방법

고정 크기 버퍼를 사용하려면 unsafe 문맥과 fixed 키워드가 필요합니다. 아래 예시처럼 구조체 내에 선언할 수 있습니다.

unsafe struct FixedBufferExample
{
    public fixed int buffer[10];
}

2. 사용하는 이유와 장점

고정 크기 버퍼를 사용하면 힙 할당 없이 스택에 고정된 메모리를 할당하게 됩니다. 이 방식은 메모리 관리 비용을 줄이고, 성능을 개선할 수 있습니다. 특히, 네이티브와 상호작용하거나 고성능 게임 개발 시 많이 씁니다.

3. 접근 방법

고정 버퍼는 포인터로 접근합니다. 다음 예시는 고정 버퍼에 값을 대입하는 방법입니다.

unsafe
{
    FixedBufferExample example = new FixedBufferExample();
    for (int i = 0; i < 10; i++)
    {
        example.buffer[i] = i * i;
    }
}

4. 주의사항

고정 크기 버퍼는 unsafe 코드라 보안과 안전성에 주의해야 합니다. 프로젝트 속성에서 unsafe 코드를 허용해야 하며, 가비지 컬렉터가 관리하지 않는 메모리를 직접 다뤄야 합니다.

요약하면, 고정 크기 버퍼는 퍼포먼스가 중요할 때 메모리를 직접 제어하는 도구로 유용합니다.