Эти две функции позволяют создавать и разрушать частную кучу. Смотрим функцию создания кучи.
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;
}