Справочник функций и процедур 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

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

Delphi Sources

Описание
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
 


Последние добавленные на сайт исходники

TDictionary Custom Sort

Fast Watermark Sources

3D Designer

Sik Screen Capture

Patch Maker

Айболит (remote control)

 

ListBox Drag & Drop

Доска для игры Реверси

Графические эффекты

Рисование по маске

Перетаскивание изображений

Canvas Drawing

 

Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software (источник – "DelphiBasics")

Группа ВКонтакте