固定和不安全有什么区别

时间:2009-02-27 13:12:08

标签: c# memory unsafe fixed

为什么有两种不同的方法可以锁定.NET中的内存?他们之间有什么区别?

1 个答案:

答案 0 :(得分:16)

fixed语句用于unsafe modifier的上下文中。 Unsafe声明您将使用指针算法(例如:低级API调用),这是在正常的C#操作之外。 fixed语句用于锁定内存,以便垃圾收集器在仍在使用时不会重新分配它。您不能在不安全的上下文之外使用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));
            }
        }
    }
}