| Предыдущий | Следующий |
| STATUS_NOT_MAPPED_VIEW | STATUS_UNABLE_TO_DELETE_SECTION |
STATUS_UNABLE_TO_FREE_VM
Операция освобождения не соответствует схеме выделения
Освобождение и отмена фиксации подчиняются разным правилам. MEM_RELEASE требует исходный базовый адрес выделения и нулевой размер области, тогда как MEM_DECOMMIT применяется к зафиксированным страницам внутри зарезервированной области. Представления сопоставленных секций следует отключать их API сопоставления, а не освобождать как частную виртуальную память.
Сохраняйте метаданные выделения из успешного вызова создания. Угадывать базовый адрес или восстанавливать его по внутреннему указателю ненадёжно, особенно когда распределители делят, объединяют или защищают подобласти. Запрос сведений об области помогает диагностировать несовпадение, но не передаёт владение областью.
Что следует проверить
- Запишите базовый адрес, размер, тип выделения и точные флаги освобождения.
- Проверьте, принадлежит ли адрес сопоставленному представлению, куче, образу или частному резервированию.
- При освобождении всего резервирования убедитесь, что вызов очистки использует исходный базовый адрес выделения.
Ссылки
- Microsoft: VirtualFree
- Microsoft WDK: NtFreeVirtualMemory
- Microsoft: VirtualQuery
- Исходный код ReactOS: диспетчер виртуальной памяти
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.