GetMem: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
m (1 revízia: Unit System) |
|||
Řádek 58: | Řádek 58: | ||
[[Category:System]] | [[Category:System]] | ||
[[Category:Procedúry System]] | [[Category:Procedúry System]] | ||
+ | [[Category:Procedury a funkce pro dynamické alokace]] |
Aktuální verze z 5. 10. 2012, 20:48
Alokuje blok paměti určené velikosti.
- Deklarace
procedure GetMem(var P: Pointer; Size: Word);
- Režim
- Windows, Reálný, Chráněný
- Poznámky
- P je proměnná jakéhokoli pointrového typu. Size je výraz udávající v bajtech velikost dynamické proměnné, která se má alokovat. Na nově vytvořenou proměnnou se lze odkazovat konstrukcí P^.
- Pokud není v haldě (heap) pro alokaci nové proměnné dostatek volného místa, dojde k běhové (run-time) chybě.
- Omezení
- Naráz lze v haldě bezpečně alokovat blok o maximální velikosti 65.528 bajtů (64K-$8).
- Viz také
- Dispose
Vzorový příklad
{FreeMem.PAS} {Vzorový příklad pro FreeMem, GetMem a MaxAvail.} { Pro Windows: } { uses WinCrt; } type TFriendRec = record Name: string[30]; Age : Byte; end; var p: pointer; begin if MaxAvail < SizeOf(TFriendRec) then Writeln('Málo paměti') else begin { Přiděluje paměť v haldě } GetMem(p, SizeOf(TFriendRec)); { ...} { ...Používá paměť... } { ...} { Když je hotov, pak ji uvolní } FreeMem(p, SizeOf(TFriendRec)); end; end.