FreeMem

Z Delphi & Pascal (česká wiki)
Verze z 5. 10. 2012, 17:49, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (1 revízia: Unit System)
Skočit na navigaci Skočit na vyhledávání

Uvolní dynamickou proměnnou dané velikosti.

Deklarace
procedure FreeMem(var P: Pointer; Size: Word);
Režim
Windows, Reálný, Chráněný
Poznámky
P je proměnná libovolného pointrového typu, která předtím byla přiřazena procedurou GetMem nebo jí byla přiřazena nějaká smysluplná hodnota přiřazovacím příkazem.
Size je výraz, který určuje v bajtech velikost uvolňované dynamické proměnné; musí to být přesně tentýž počet bajtů, který byl předtím pro tuto proměnnou alokován procedurou GetMem.
FreeMem zruší proměnnou odkazovanou parametrem P a vrátí její paměťový prostor do haldy. Jestliže P neukazuje do paměťové oblasti v haldě, dojde k běhové chybě. Po volání FreeMem se hodnota P stane nedefinovanou a následné odkazy P^ budou znamenat chybu.
Omezení
Neměla by být používána s Mark ani Release.
Viz také
Dispose
GetMem
Mark
New
Release


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.