Устройство кучи в Win32 (HeapAlloc/HeapFree)
От: alex_e Россия нет
Дата: 16.07.02 16:43
Оценка:
Начну издалека.
Скажем, устройство DCRT кучи известно. Есть структура _CrtMemBlockHeader, которая предшествует блоку, выделенному через new/malloc/calloc. Таким образом в отладчике легко проверить любой указатель на валидность (посмотреть на его заголовок и побегать по списку выделенных блоков).

Устройство релизной CRT кучи также можно изучить, благо CRT поставляется с исходными текстами.

А как устроены кучи Win32? Какие заголовки предшествуют блокам выделенной памяти? Это кому-нибудь известно? (У Рихтера ничего нет...)

А проблема такая. Приложение упало на RtlFreeHeap(). По дампу процесса установлено, что указатель передан в HeapFree() корректный. В смысле, что по нему находятся именно те данные, которые там и должны находиться. Нет сомнений, что указатель получен через HeapAlloc(). Интересно было бы проверить корректность заголовка этого указателя, либо как-то еще проверить его.

Буду очень благодарен за любую информацию по такой специфичной проблеме.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.