문제

.NET에 메모리가 제자리에있는 두 가지 방법이있는 이유는 무엇입니까? 그들의 차이점은 무엇입니까?

도움이 되었습니까?

해결책

고정 진술은 안전하지 않은 수정 자. 안전하지 않은 것은 Pointer 산술 (예 : 낮은 레벨 API 호출)을 사용한다고 선언합니다. 이는 일반 C# 작업 외부에 있습니다. 그만큼 결정된 문은 메모리를 제자리에 고정시키는 데 사용되므로 쓰레기 수집기가 여전히 사용중인 동안 재 할당하지 않습니다. 안전하지 않은 상황 밖에서 고정 된 명령문을 사용할 수 없습니다.

예시

public static void PointyMethod(char[] array)
{
    unsafe
    {
        fixed (char *p = array)
        {
            for (int i=0; i<array.Length; i++)
            {
                System.Console.Write(*(p+i));
            }
        }
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top