Delphi-Help

GetMem

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

GetMem

Описание

function GetMem ( var StoragePointer : Pointer; StorageSize : Integer ) ;

Процедура GetMem пытается получить указанные в StorageSize байт памяти, сохраняя указатель на память в StoragePointer. Если при распределении произошли сбои, то вызывается исключение EOutOfMemory. Память не всегда инициализируется.

Пример кода

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

Примечание

Процедура GetMem потоко безопасна, пока IsMultiThread истинено. Для распределения памяти для записей лучше использовать New - пример используется для иллюстрации GetMem и манипуляции указателем.

Авторизация



Счетчики