Драсте...
Провожу "исследование" памяти процесса под Win98. Всё нормально, всё замечательно и вдруг...
Вдруг вижу, что куча с одним и тем же ID расположена в ДВУХ регионах памяти:
0x00400078 — первая "часть" кучи N
0x0C10FFD0 — вторая "часть" кучи N
И еще одна такая же "разорвашка"
0x024D0EB0 — первая "часть" кучи K
0x0CC10014 — вторая "часть" кучи K
Куч в изучаемом процессе на момент ухода в штопор (из-за абсолютной неожиданности подобной ситуации) моей проги — 57, из них две кучи как бы разбиты на части, которые расположены в разных регионах, и между этими регионами (частями куч) расположены другие кучи, проецируемые файли, стеки и прочие неопознанные регионы памяти.
Ну фигня ведь! Разве одна куча (на что указывает ее ID) может иметь блоки, расположенные в разных регионах?
Более того, блоки одной из "разорванных" куч попадают в диапазон адресов другой (имеющий другой ID) кучи!!! АААААааааааа!!!!!.......
Люди добрые, хорошие и отзывчивые, ну объясните мне, дурню, на что я "напоролся" и как это дело "переварить"?
з.ы. Информацию о кучах и блоках в них получал через библиотеку ToolHelp функциями Heap32ListFirst/Next и Heap32First/Next. OC — Win98