Поделиться через


Разрешение вопросов, связанных с исключениями: System.AccessViolationException

Исключение AccessViolationException возникает при попытке чтения или записи в защищенную область памяти.

Полезные советы

  • Убедитесь, что память, в которую производится доступ, была выделена.
    Автоматическое управление памятью — это одна из служб, которые предоставляет среда CLR. Может потребоваться использовать управляемый код, чтобы воспользоваться преимуществами этой службы. Дополнительные сведения см. в разделе Автоматическое управление памятью.

  • Убедитесь, что память, в которую производится доступ, не была повреждена.
    Если несколько операций чтения или записи произошли по неправильным указателям, память может быть повреждена.

Примечания

Нарушение прав доступа случается в неуправляемом или небезопасном коде при попытке чтения или записи в память, которая не была выделена или к которой нет доступа. Не все операции чтения или записи по неправильным указателям приводят к нарушениям прав доступа, поэтому нарушение прав доступа обычно указывает, что таких операций было несколько и что память может быть повреждена.

В управляемом коде все ссылки являются либо допустимыми, либо пустыми. Любая операция, которая пытается сослаться на пустую ссылку в проверяемом коде вызывает исключение NullReferenceException.

Нарушение прав доступа, возникающее в небезопасном управляемом коде, может быть выражено как исключение NullReferenceException или AccessViolationException, в зависимости от платформы.

Нарушения прав доступа в неуправляемом коде, передаваясь вверх к управляемому коду всегда помещаются ("оборачиваются") в исключение AccessViolationException.

См. также

Задачи

Практическое руководство. Использование помощника по исключениям

Основные понятия

Memory Management: Examples

Автоматическое управление памятью