"Разорванная" куча - что за глюк?
От: scar  
Дата: 21.10.03 08:41
Оценка:
Драсте...
Провожу "исследование" памяти процесса под Win98. Всё нормально, всё замечательно и вдруг...
Вдруг вижу, что куча с одним и тем же ID расположена в ДВУХ регионах памяти:
0x00400078 — первая "часть" кучи N
0x0C10FFD0 — вторая "часть" кучи N

И еще одна такая же "разорвашка"
0x024D0EB0 — первая "часть" кучи K
0x0CC10014 — вторая "часть" кучи K

Куч в изучаемом процессе на момент ухода в штопор (из-за абсолютной неожиданности подобной ситуации) моей проги — 57, из них две кучи как бы разбиты на части, которые расположены в разных регионах, и между этими регионами (частями куч) расположены другие кучи, проецируемые файли, стеки и прочие неопознанные регионы памяти.
Ну фигня ведь! Разве одна куча (на что указывает ее ID) может иметь блоки, расположенные в разных регионах?

Более того, блоки одной из "разорванных" куч попадают в диапазон адресов другой (имеющий другой ID) кучи!!! АААААааааааа!!!!!.......
Люди добрые, хорошие и отзывчивые, ну объясните мне, дурню, на что я "напоролся" и как это дело "переварить"?

з.ы. Информацию о кучах и блоках в них получал через библиотеку ToolHelp функциями Heap32ListFirst/Next и Heap32First/Next. OC — Win98
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.