HeapCreate и HeapDestroy
Эти две функции позволяют создавать и разрушать частную кучу. Смотрим функцию создания кучи.
HANDLE HeapCreate
(
DWORD flOptions, // атрибуты
SIZE_T dwInitialSize, // начальный размер
SIZE_T dwMaximumSize // конечный размер
);
Атрибутов всего два:
- HEAP_GENERATE_EXCEPTIONS - Говорит о том, что в случае ошибки нужно генерировать структурную исключительную ситуацию вместо возврата NULL.
- HEAP_NO_SERIALIZE - указатель на то, что куча не должна синхронизировать доступ.
При указании максимального размера можно указать 0 что будет говорить о том что максимальный размер будет ограничен только размером виртуальной памяти.
Результат зависит от флага либо исключение, либо NULL.
А вот функция удаления кучи.
BOOL HeapDestroy
(
HANDLE hHeap // указатель на кучу
);
Если выполнение удачно, то будет возвращено ненулевое значение. Смотрим пример создания и удаления кучи.
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
void main()
{
HANDLE hHeap; // указатель на кучу
hHeap=HeapCreate(0,0x01000,0); // создать
if (hHeap!=NULL) // если создана удачно
{
// Разрушить и сообщить в случае ошибки
if (HeapDestroy(hHeap)==0)
cout << "Error delete Heap" << endl;
}
else
cout << "Error Create Heap" << endl;
}