В чем разница между фиксированным и небезопасным - PullRequest
4 голосов
/ 27 февраля 2009

Почему в .NET есть два способа блокировки памяти? В чем разница между ними?

1 Ответ

16 голосов
/ 27 февраля 2009

Фиксированный оператор используется в контексте небезопасного модификатора . Unsafe заявляет, что вы собираетесь использовать арифметику указателей (например, низкоуровневый вызов 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));
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...