FreeMem - Освобождает память, занятую динамической переменной данного размера.
Объявление:
Procedure FreeMem(Var P : Pointer; Size : Word);
Режим:
Windows, Real, Protected
Замечания:

Параметр P - переменная любого указательного типа, предварительно распределенная в памяти процедурой GetMem или та, которой было присвоено значение оператором присваивания.

Параметр Size - выражение, определяющее размер динамической переменной в байтах, память, занимаемую которой нужно освободить. Он должен быть равен числу байт, предварительно распределенных для этой переменной процедурой GetMem.

Процедура FreeMem уничтожает переменную, связанную с P и освобождает память, занимаемую этой переменной. Если P не указывает на область памяти в куче, то происходит ошибка во время выполнения программы. После обращения к FreeMem, значение P становится неопределенным и если вы впоследствии пытаетесь сослаться на P^, то происходит ошибка.
Ограничения:

Нельзя использовать совместно с Mark или Release.
Пример: view source

print
?01 { Пример программы для процедур FreeMem и GetMem и функции MaxAvail }
02
03 Uses WinCrt;
04
05 Type TFriendRec = Record
06 Name : String[30];
07 Age : Byte;
08 End;
09 Var P : Pointer;
10
11 Begin
12 If MaxAvail13 Else
14 Begin
15 { Распределяем память в куче }
16 GetMem(P, SizeOf(TFriendRec));
17 { ...}
18 { ... Используем память ... }
19 { ...}
20 { Освобождаем ее при завершении программы }
21 FreeMem(P, SizeOf(TFriendRec));
22 End;
23 End.