| Description |
The GetMem procedure attempts to get the specified StorageSize bytes of storage, storing a pointer to the storage in StoragePointer.
If the allocation fails, then a EOutOfMemory exception is raised.
The storage is not initialised in any way.
|
| | Notes | The GetMem procedure is Thread safe as long as IsMultiThread is true.
It is better to use New to allocate storage for records - the example is for illustration of GetMem and pointer manipulation.
| | | Related commands | | Dispose | | Dispose of storage used by a pointer type variable | | FillChar | | Fills out a section of storage with a fill character or byte value | | FreeMem | | Free memory storage used by a variable | | New | | Create a new pointer type variable | | ReallocMem | | Reallocate an existing block of storage |
|
Download this web site as a Windows program.
|
|
|
|
| Example code : Get storage for 3 records and use this storage | type
TRecord = Record
name : string[10];
age : Byte;
end;
var
recPointer : ^TRecord;
begin
 // Allocate storage for three records
 // Note : It is better to use New for this
 // It is used here for illustration purposes only
GetMem(recPointer, 3 * SizeOf(TRecord));
 // Fill out these 3 records with values
recPointer.name := 'Brian';
recPointer.age := 23;
Inc(recPointer);
recPointer.name := 'Jim';
recPointer.age := 55;
Inc(recPointer);
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;
| | Show full unit code | Brian is 23
Jim is 55
Sally is 38 | |
|
|