为什么在.NET中有两种不同的方式将内存锁定在适当的位置?它们之间有什么区别?

最佳答案

固定语句在unsafe modifier的上下文中使用。不安全声明您将使用指针算术(例如,低级API调用),这是常规C#操作之外的。 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));
            }
        }
    }
}

关于c# - 固定和不安全有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/594676/

10-11 20:56