Процедура FreeMem в Delphi освобождает память, используемую переменной.
System unit
procedure FreeMem (MemoryPointer : Pointer {; MemorySize : Integer});
Процедура FreeMem освобождает память, используемую переменной MemoryPointer.
Вы можете произвольно определить MemorySize, который будет освобожден. Однако, Вы должны определить размер, распределенный на первом месте.
Если переменная является нулевой (nil), тогда ничто не происходит.
Если переменная неправильно указывает на память (возможно она уже была освобождена), то выбрасывается исключение EInvalidPointer.
Если память содержит ссылки на переменные основанные на памяти, то вы должны вызвать Finalize перед FreeMem.
Процедура FreeMem – противоположная GetMem команде.
Лучше использовать New и Dispose вместо GetMem и FreeMem. Они позволяют избегать потребности вызова Finalize.
Процедура FreeMem: Простой пример использования GetMem и FreeMem
var
charPtr : PChar;
begin
// Распределение памяти для 4-х символов
GetMem(charPtr, 4 * SizeOf(Char));
// Присвоение им значений
charPtr^ := 'A';
Inc(charPtr);
charPtr^ := 'B';
Inc(charPtr);
charPtr^ := 'C';
Inc(charPtr);
charPtr^ := #0; // признак конца строки
// Теперь показываем эти значения
Dec(charPtr, 3);
ShowMessage('Сохраненные символы = '+charPtr);
// Теперь освобождаем память этих символов
FreeMem(charPtr);
end;
Результат
Сохраненные символы = ABC
Похожие функции, процедуры и команды
Dispose — очищает память на которую указывает указатель.
GetMem — получает указанное число байтов памяти.
New — создаёт новую переменную типа указатель.
ReallocMem — позволяет изменить размер существующего блока памяти.
