Skip to content

KO CSharp Memory Unsafe

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

메모리: ref, Span, ref struct 및 unsafe

설명서 C# · 예시 UO

Span<T> 및 ReadOnlySpan<T>는 복사할 필요 없이 메모리에 대한 보기를 제공합니다. ref-return 및 ref-로컬 변수를 사용하면 기존 저장 위치로 작업할 수 있습니다. 컴파일러는 참조의 수명을 제어합니다. ref struct는 일반 힙 필드로 사용할 수 없습니다. await 및 yield에 대한 제한은 허용된 수명에 따라 다릅니다.

간단한 예제 (Example.cs)

이 예제를 Example.cs로 따로 저장하고 이 페이지의 다른 예제와 독립적으로 실행하세요.

Example.cs:

// PROJECT-EXAMPLE
System.Span<int> values = stackalloc int[] { 2, 3 };
System.Console.WriteLine(values[0] + values[1]);

결과:

5
static int SumSmall()
{
    Span<int> values = stackalloc int[] { 1, 2, 3 };
    int total = 0;
    foreach (int value in values) total += value;
    return total;
}
UO.Print(SumSmall().ToString());

unsafe는 컴파일에 AllowUnsafeBlocks이 포함된 경우 포인터와 메모리 기능을 활성화합니다. fixed는 원하는 위치로 이동된 객체의 주소를 보유합니다. 이는 표준 C# 기능이며 게임 세계 소유권 규칙을 우회하는 방법이 아닙니다.

// PROJECT-EXAMPLE
namespace UserTools;

public static class PointerExample
{
    public static unsafe int ReadLocal()
    {
        int value = 42;
        int* address = &value;
        return *address;
    }
}

공식 문서: 메모리: ref, Span, ref struct 및 unsafe - Microsoft 학습.

Clone this wiki locally