Процедура 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 — дозволяє змінити розмір існуючого блоку пам'яті.
