Что означает код NTSTATUS 0xC00000A0 (STATUS_MEMORY_NOT_ALLOCATED)?

 
Предыдущий Следующий
STATUS_FREE_VM_NOT_AT_BASE STATUS_WORKING_SET_QUOTA

STATUS_MEMORY_NOT_ALLOCATED

Диапазон адресов свободен или находится вне принадлежащего выделения

Этот статус обычно является следствием устаревшего указателя, двойного освобождения, вычисления размера за границу выделения или очистки в неправильном процессе. Он отличается от незафиксированной страницы внутри резервирования, поскольку диспетчер памяти вообще не может связать диапазон с ожидаемым выделением.

Рассматривайте это как дефект владения, а не пробуйте случайно другой API освобождения. Зафиксируйте исходные стеки выделения и освобождения, затем установите, был ли регион уже освобождён или никогда не принадлежал вызывающей стороне. Межпроцессные операции должны использовать предполагаемый дескриптор процесса и адресное пространство.

Что следует проверить

  • Запросите адрес в целевом процессе и запишите State, Type и AllocationBase.
  • Проверьте двойную очистку, использование после освобождения и путаницу дескрипторов процессов.
  • Проверьте арифметику база плюс размер на переполнение или переход в соседний свободный диапазон.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.