Открыть сервисСервис

Инструкция обратилась к памяти по адресу

«Инструкция обратилась к памяти по адресу. Память не может быть read» — системное сообщение об ошибке (исключение) операционной системы Microsoft Windows, возникающее при попытке процесса выполнить обращение к участку оперативной памяти, доступ к которому не разрешён. Ошибка имеет код 0xC0000005 (STATUS_ACCESS_VIOLATION) и сопровождается синим экраном смерти (BSOD) либо аварийным завершением приложения. Сообщение является одним из наиболее распространённых в семействе Windows и может указывать как на программные дефекты, так и на аппаратные неисправности.

Природа ошибки

В защищённом режиме операционной системы каждый процесс получает собственное виртуальное адресное пространство. Обращение к адресу, который не был выделен процессу, не отмечен как доступный для чтения (read), записи (write) или исполнения, приводит к аппаратному прерыванию. Диспетчер памяти ядра Windows преобразует его в исключение STATUS_ACCESS_VIOLATION и передаёт процессу. Если обработчик исключения отсутствует или сам процесс не может корректно завершиться, система выводит BSOD.

Типичные причины появления сообщения:

  • обращение к уже освобождённому участку памяти (use-after-free);
  • выход программы за границы выделенного буфера (buffer overflow);
  • запись в область, открытую только для чтения;
  • повреждённый указатель или ссылка в коде программы;
  • конфликт драйверов аппаратных устройств;
  • дефекты оперативной памяти (ОЗУ) или жёсткого диска.

Где проявляется

Ошибка может возникать на разных уровнях:

УровеньПроявление
ПриложениеДиалоговое окно «Программа перестала работать», аварийное завершение
Служба WindowsОстановка сервиса, запись в журнале событий
Ядро системыСиний экран смерти с кодом 0xC0000005

Часто сообщение сопровождается именем модуля, в котором произошло нарушение (например, ntdll.dll, kernel32.dll или файл конкретной программы), что помогает локализовать источник проблемы.

Диагностика

Для выявления причины используются встроенные средства Windows:

  • Просмотрщик событий (eventvwr.msc) — раздел «Журналы приложений и служб» → «Windows» → «Система» и «Приложения» содержит записи о сбоях с кодом 0xC0000005.
  • Параметры системы (sysdm.cpl) — вкладка «Дополнительно» → раздел «Загрузка и восстановление» позволяет включить запись дампов памяти.
  • Диспетчер задач — отображение процессов с высоким потреблением ресурсов и зависших служб.
  • Средства проверки памяти (mdsched.exe) — тест ОЗУ на наличие физических дефектов.

Для углублённого анализа применяются сторонние утилиты: WinDbg с расширением !analyze -v, BlueScreenView (NirSoft), WhoCrashed. Они читают дампы памяти и указывают модуль-виновник смещения ошибки.

Методы устранения

  1. Обновление программного обеспечения. Установка актуальных версий драйверов, особенно видеокарт, сетевых адаптеров и звуковых устройств, устраняет значительную часть сбоев.
  2. Проверка целостности системных файлов. Команда sfc /scannow в командной строке с правами администратора восстанавливает повреждённые компоненты Windows.
  3. Проверка ОЗУ. Запуск mdsched.exe или использование MemTest86 позволяет выявить неисправные модули памяти.
  4. Откат обновлений. Если ошибка появилась после установки обновления Windows, его удаление через «Параметры» → «Центр обновления Windows» → «Журнал обновлений» может вернуть работоспособность.
  5. Чистая загрузка. Запуск системы с минимальным набором служб (msconfig) помогает исключить конфликт стороннего ПО.
  6. Проверка диска. Утилита chkdsk C: /f /r устраняет логические и секторные ошибки накопителя.

Особенности в разных версиях Windows

В Windows 7 и более ранних версиях ошибка чаще всего сопровождалась полным синим экраном с подробным перечнем загруженных модулей. В Windows 10 и 11 сообщение оформлено компактнее: выводится краткий QR-код и ссылка на страницу поддержки Microsoft, а подробности дампа сохраняются в файл %SystemRoot%\MEMORY.DMP. В 64-разрядных системах адрес, указанный в сообщении, всегда является виртуальным и не соответствует физическому адресу модуля ОЗУ.

Связь с безопасностью

В ряде случаев STATUS_ACCESS_VIOLATION возникает при попытках эксплуатации уязвимостей в программном обеспечении — например, при переполнении буфера вредоносным кодом. Антивирусные системы и средства защиты Windows (ASLR, DEP, CFG) направлены на предотвращение подобных атак, но их срабатывание также может фиксироваться как ошибка обращения к памяти.

Источники:

  • Microsoft Docs — «Bug check code reference»
  • Microsoft Support — «Коды остановки 0x00000005»
  • NirSoft — BlueScreenView documentation
  • Microsoft TechNet — «Работа с дампами памяти Windows»
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru