Освобождение памяти
Память, выделенную с помощью функции HeapAlloc, следует освободить, как только в ней отпадет надобность. Это нужно сделать при помощи функции HeapFree:
BOOL HeapFree(
HANDLE hHeap, // идентификатор пула
DWORD dwFlags, // флаги освобождения памяти
LPVOID lpMem); // адрес освобождаемого блока памяти
Если блоком памяти пользуется только одна задача процесса, вы можете передать через параметр dwFlags значение HEAP_NO_SERIALIZE.
Если размер блока памяти, выделенного функцией HeapAlloc, был изменен функцией HeapReAlloc, для освобождения такого блока памяти вы все равно должны использовать функцию HeapFree.