Книга: Системное программирование в среде Windows
Резюме: управление кучами
Резюме: управление кучами
Обычная процедура использования куч не представляет никаких сложностей:
1. Получите дескриптор кучи, воспользовавшись одной из функций CreateНеар или GetProcessHeap.
2. Распределите блоки из кучи, используя функцию HeapAlloc.
3. В случае необходимости освободите все или только некоторые блоки при помощи функции HeapFree.
4. Уничтожьте кучу и закройте ее дескриптор при помощи функции HeapDestroy.
Этот процесс иллюстрируют рис. 5.2 и программа 5.2.
В отсутствие необходимости создания отдельных куч или генерации исключений программисты, которые привыкли использовать функции управления памятью из библиотеки С, могут использовать их и далее. При этом, если речь идет о куче процесса, функция malloc эквивалентна функции HeapAlloc, функция realloc — функции HeapReAlloc, а функция free — функции HeapFree. Функция calloc распределяет память и инициализирует объекты, и ее поведение легко эмулируется функцией HeapAlloc. Эквивалент функции HeapSize в библиотеке С отсутствует.