5

.NET でメモリをロックする方法が 2 つあるのはなぜですか? それらの違いは何ですか?

4

1 に答える 1

16

固定ステートメントは、安全でない修飾子のコンテキストで使用されます。Unsafeは、通常のC#操作の範囲外であるポインター演算(例:低レベルAPI呼び出し)を使用することを宣言します。固定ステートメントは、メモリを所定の位置にロックするために使用されるため、ガベージコレクターは、メモリがまだ使用されている間はメモリを再割り当てしません。安全でないコンテキストの外でfixedステートメントを使用することはできません。

public static void PointyMethod(char[] array)
{
    unsafe
    {
        fixed (char *p = array)
        {
            for (int i=0; i<array.Length; i++)
            {
                System.Console.Write(*(p+i));
            }
        }
    }
}
于 2009-02-27T13:13:19.797 に答える