Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
FreeMem
Процедура
Освобождает память, используемую переменной System unit
  procedure FreeMem ( MemoryPointer : Pointer {; MemorySize : Integer} ) ;
Описание
Процедура FreeMem освобождает память, используемую переменной MemoryPointer.

Вы можете произвольно определить MemorySize, который будет освобожден. Однако, Вы должны определить размер, распределенный на первом месте.

Если переменная является нулевой (nil), тогда ничто не происходит.

Если переменная неправильно указывает на память (возможно она уже была освобождена), то выбрасывается исключение EInvalidPointer.

Если память содержит ссылки на переменные основанные на памяти, то вы должны вызвать Finalize перед FreeMem.

FreeMem - противоположная GetMem команда.

Лучше использовать New и Dispose вместо GetMem и FreeMem. Они позволяет избегать потребность вызова Finalize.
Похожие команды
Dispose  Очищает память на которую указывает указатель

GetMem  Получает указанное число байтов памяти.

New  Создаёт новую переменную типа указатель

ReallocMem  Позволяет изменить размер существующего блока памяти

 
Пример кода : Простой пример использования 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
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия