| Предыдущий | Следующий |
| STATUS_FREE_VM_NOT_AT_BASE | STATUS_WORKING_SET_QUOTA |
STATUS_MEMORY_NOT_ALLOCATED
Диапазон адресов свободен или находится вне принадлежащего выделения
Этот статус обычно является следствием устаревшего указателя, двойного освобождения, вычисления размера за границу выделения или очистки в неправильном процессе. Он отличается от незафиксированной страницы внутри резервирования, поскольку диспетчер памяти вообще не может связать диапазон с ожидаемым выделением.
Рассматривайте это как дефект владения, а не пробуйте случайно другой API освобождения. Зафиксируйте исходные стеки выделения и освобождения, затем установите, был ли регион уже освобождён или никогда не принадлежал вызывающей стороне. Межпроцессные операции должны использовать предполагаемый дескриптор процесса и адресное пространство.
Что следует проверить
- Запросите адрес в целевом процессе и запишите State, Type и AllocationBase.
- Проверьте двойную очистку, использование после освобождения и путаницу дескрипторов процессов.
- Проверьте арифметику база плюс размер на переполнение или переход в соседний свободный диапазон.
Ссылки
- Microsoft: VirtualQuery
- Microsoft: VirtualFree
- Microsoft WDK: NtFreeVirtualMemory
- Исходный код ReactOS: диспетчер виртуальной памяти
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.