Что означает код HRESULT 0x80080010 (MEM_E_INVALID_LINK)?

 
Предыдущий Следующий
MEM_E_INVALID_ROOT MEM_E_INVALID_SIZE

MEM_E_INVALID_LINK

Что означает MEM_E_INVALID_LINK

MEM_E_INVALID_LINK (0x80080010) означает нарушение внутренней связности структуры памяти: ссылка next/previous или иной link указывает не на допустимый элемент ожидаемой цепочки.

Что проверить

Остановитесь на первом месте, где цепочка перестаёт быть взаимно согласованной. Запишите адрес текущего блока, соседние link-поля, размер allocation и allocator, которому принадлежит каждый адрес. Проверьте use-after-free, двойное освобождение, запись за границу буфера и смешение объектов из разных heaps; простая проверка «указатель ненулевой» здесь недостаточна.

Для контроля воспроизведите операцию с heap diagnostics/PageHeap или эквивалентной проверкой allocator metadata и убедитесь, что переход по каждому link остаётся внутри живых блоков этой же структуры. Исправление должно устранять первую запись, портящую связь, а не только место, где повреждение позднее обнаруживается.

Справка: Windows heap functions · HeapValidate.


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