Pregunta

¿Por qué hay 2 maneras diferentes de bloqueo de memoria en su lugar en .NET? ¿Cuál es la diferencia entre ellos?

¿Fue útil?

Solución

La declaración fija se utiliza en el contexto de la inseguro modificador . Insegura declara que el uso que se va puntero aritmética (por ejemplo: bajo nivel de llamada API), que está fuera de las operaciones normales de C #. El fija comunicado se utiliza para bloquear la memoria de coloque por lo que el recolector de basura no se reasignará que mientras que todavía está en uso. No se puede utilizar la sentencia fija fuera del contexto de inseguridad.

Ejemplo

public static void PointyMethod(char[] array)
{
    unsafe
    {
        fixed (char *p = array)
        {
            for (int i=0; i<array.Length; i++)
            {
                System.Console.Write(*(p+i));
            }
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top