Функція 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 — дозволяє змінити розмір існуючого блоку пам'яті.