Серия

Нарушение доступа C0000005

Нарушение доступа — это тип исключения, вызванного тем, что приложение считывает, записывает или выполняет недопустимый адрес памяти.

Код исключения — 0xC0000005

Первый параметр исключения (0) — это тип нарушения; Чтение (0), запись (1) или выполнение (8)

Второй параметр исключения (1) — это адрес нарушения.

Выполните следующие действия при отладке этих проблем с помощью средств отладки для Windows:

  1. .exr -1
    • Код исключения
    • Параметр[0] — чтение (0), запись (1), выполнение (8)
    • Параметр[1] — адрес
  2. .ecxr
    • Регистрация значений при нарушении доступа
    • Инструкция сборщика
      • Чтение— посмотрите выражение справа от запятой
      • Запись — посмотрите выражение слева от запятой
      • Выполнение— просмотр адреса выражения
  3. k
    • Просмотр стека вызовов при нарушении доступа

Адрес памяти может быть недопустимым из-за одного из следующих распространенных сценариев:

  • Указатель NULL — адреса между 0x0 и 0x10000 (64K), например функция, которая обычно возвращает указатель, возвращаемый значение NULL (0x0), а указатель был доступ без проверки.
  • Повреждение памяти — адрес ошибочно или злонамеренно перезаписан — обычно с помощью переполнения буфера (или при выполнении)
  • Использование после бесплатного использования — адрес был допустимым, но теперь осуществляется доступ после освобождения (данных) или выгрузки (кода)
  • Bit-Flip — проблема с ОЗУ (оборудованием), из-за которой один или несколько битов перевернуты (редкие)

Сведения о проблемах чтения или записи см. в эпизоде чтения или записи .
Сведения о проблемах выполнения см. в эпизоде Execute .

Обратите внимание, что приложения СРЕДЫ CLR вызывают исключение System.NullReferenceException вместо исключения нарушения доступа, если адрес находится между 0x0 и 0x10000 (64K).

Дополнительные ресурсы:

Хотите оставить отзыв? Сообщить о проблеме можно здесь.