Heap
Имеется следующий код
<CODE>
Memory:=HeapCreate(0,0,0);
h1:=HeapAlloc(Memory,8,4);
...
{здесь записываем данные в h1}
...
h2:=HeapAlloc(Memory,8,4);
...
{здесь по идее изменяем размер блока h2, записываем данные}
...
</CODE>
Так вот, второй блок никак не хочет выделяться из кучи :(. Причём если до попытки выделения второго блока ничего не делать с первым то всё проходит нормально.
Что делать?
hHeap := GetProcessHeap; // У каждого процесса есть по крайней мере одна куча, так зачем создавать новую? ;)
h1 := HeapAlloc(hHeap, 0, 100); // h1: Pointer указывает на область в 100 байт.
Изменять размер блока можно функцией HeapReAlloc.
Не забываем освобождать память функцией HeapFree.
Стоит обратить внимание на функции Local(Re)Alloc, LocalFree. С ними чуть-чуть проще обращаться.