Delphi-Help

ReallocMem

Печать
Рейтинг пользователей: / 0
ХудшийЛучший 

ReallocMem

Описание

procedure ReallocMem ( var StoragePointer : Pointer; StorageSize : Integer ) ;

Delphi процедура 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

Примечание

Предупреждение: используйте с предосторожностью - чрезмерное использование может фрагментировать память.

 

Авторизация



Счетчики