Справочник функций и процедур Delphi: ReallocMem

  Навигация по первой букве:

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

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

  Реклама:

|  Какое средство от тараканов fabriz.ru/catalog/means-of-cockroaches-and-ants/.  |

ReallocMem
Процедура
Позволяет изменить размер существующего блока памяти System unit
  procedure ReallocMem ( var StoragePointer : Pointer; StorageSize : Integer ) ;

Google  
 
Описание
Delphi процедура ReallocMem изменяет размер памяти существующего блока хранения.

Размер может быть меньшим или больше.

Если меньше, тогда существующий размер памяти будет уменьшен на разность существующего размера к необходимому.

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

FreeMem  Освобождает память, используемую переменной

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

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

 
Пример кода : Распределение используя GetMem, и затем перераспределение используя ReallocMem
type
  TRecord = Record
    name : string[10];
    age  : Byte;
  end;

var
  recPointer : ^TRecord;

begin
  // Распределите память для 2 записей
  // Обратите внимание: для этого лучше использовать New
  // Здесь используется только в целях иллюстрации
  GetMem(recPointer, 2 * SizeOf(TRecord));

  // Заполнение значениями этих 2-х записей
  recPointer.name := 'Brian';
  recPointer.age  := 23;

  Inc(recPointer);
  recPointer.name := 'Jim';
  recPointer.age  := 55;

  // Ууупс - забыли добавить Sally...
  Dec(recPointer);
  ReallocMem(recPointer, 3 * SizeOf(TRecord));

  // Теперь добавляем 3-ю запись
  Inc(recPointer,2);
  recPointer.name := 'Sally';
  recPointer.age  := 38;

  // Теперь показываем эти значения
  Dec(recPointer, 2);
  ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]);
  Inc(recPointer);
  ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]);
  Inc(recPointer);
  ShowMessageFmt('%s - %d',[recPointer.name, recPointer.age]);
end;
Brian - 23
Jim - 55
Sally - 38
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook