Структура арены.

Арена в занятых блоках. Начинается с поля длины блока. Затем в некоторых версиях Windows кроме длины блока могут указываться значения счётчика команд перед обращением к куче.

Арена в свободных блоках. SIZE – размер PREV – указатель на пустой свободный блок. NEXT – указатель на следующий свободный блок, то есть свободные блоки связаны в цепочки.

Функции управления кучей Win32.

GetProcessHeap(…) – получить дескриптор кучи, предоставляемый процессу по умолчанию. Эта функция находит PDB и извлекает из базы данных дескриптор кучи.

HeapCreate(…) – создание кучи. Вызывают не только приложения пользователя, но и kernel32.dll и user32.dll вызывает для создания системных структур данных, например PDB или базы данных потока (TDB).

Процесс создания кучи проходит в 2 этапа:

1. резервирование памяти для кучи и связывание кучи в списке куч процесса.

2. инициализация всех полей заголовка кучи.

Функция HeapCreate(…) проверяет корректность параметров. Округляет границу кучи до ближайшего целого числа кратного 4 Кб.