Функция GetMem в Delphi получает указанное число байтов памяти.
System unit
function GetMem (var StoragePointer : Pointer; StorageSize : Integer);
Функция GetMem пытается получить указанные в StorageSize байт памяти, сохраняя указатель на память в StoragePointer. Если при распределении произошли сбои, то вызывается исключение EOutOfMemory. Память не всегда инициализируется.
Примечание.
Функция GetMem потоко безопасна, пока IsMultiThread истинено. Для распределения памяти для записей лучше использовать New - пример используется для иллюстрации GetMem и манипуляции указателем.
Функция GetMem: Получение памяти для 3-х записей, и использование этой памяти
type
TRecord = Record
name : string[10];
age : Byte;
end;
var
recPointer : ^TRecord;
begin
// Распределение памяти для трех записей
// Обратить внимание: для этого лучше использовать New
// Он здесь используется только в целей иллюстрации
GetMem(recPointer, 3 * SizeOf(TRecord));
// Заполнение этих 3-х записей значениями
recPointer.name := 'Brian';
recPointer.age := 23;
Inc(recPointer);
recPointer.name := 'Jim';
recPointer.age := 55;
Inc(recPointer);
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
Похожие функции, процедуры и команды
Dispose — очищает память на которую указывает указатель.
FillChar — заполняет раздел памяти значением байта или символа-заполнителя.
FreeMem — освобождает память, используемую переменной.
New — создаёт новую переменную типа указатель.
ReallocMem — позволяет изменить размер существующего блока памяти.
