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

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

Процедура ReplaceDate: Распределение используя 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;

Main Menu