Описание:
Delphi процедура ReallocMem изменяет
размер памяти существующего блока хранения.
Размер может быть меньшим или больше.
Если
меньше, тогда существующий размер памяти будет уменьшен на разность
существующего размера к необходимому.
Если
больше, тогда размер памяти будет расширен. Или будет создан новый блок памяти,
если это необходимо. В любом случае, блочные данные существующей памяти
сохранены, и новая часть памяти инициализирована.
Пример кода:
type
TRecord = Record
name : string[10];
age : Byte;
end;
var
recPointer : ^TRecord;
begin
// Allocate storage for 2 records
// Note : It is better to use New for this
//
It is used here for illustration purposes only
GetMem(recPointer, 2 * SizeOf(TRecord));
// Fill out these
2 records with values
recPointer.name := 'Brian';
recPointer.age := 23;
Inc(recPointer);
recPointer.name := 'Jim';
recPointer.age :=
55;
// Whoops - forgot to add Sally ...
Dec(recPointer);
ReallocMem(recPointer, 3 * SizeOf(TRecord));
// Now add a third record
Inc(recPointer,2);
recPointer.name := 'Sally';
recPointer.age := 38;
// Now display these values
Dec(recPointer, 2);
ShowMessageFmt('%s is
%d',[recPointer.name, recPointer.age]);
Inc(recPointer);
ShowMessageFmt('%s is %d',[recPointer.name, recPointer.age]);
Inc(recPointer);
ShowMessageFmt('%s is
%d',[recPointer.name, recPointer.age]);
end;
Результат выполнения:
Brian is 23
Jim is 55
Sally is 38