FreeMem: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
m (1 revízia: Unit System)
 
(Není zobrazena jedna mezilehlá verze od stejného uživatele.)
Řádek 9: Řádek 9:
 
;Poznámky
 
;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.
 
: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]].
 
: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 [[halda|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.
 
:[[FreeMem]] zruší proměnnou odkazovanou parametrem P a vrátí její paměťový prostor do [[halda|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í
 
;Omezení
Řádek 59: Řádek 62:
 
[[Category:System]]
 
[[Category:System]]
 
[[Category:Procedúry System]]
 
[[Category:Procedúry System]]
 +
[[Category:Procedury a funkce pro dynamické alokace]]

Aktuální verze z 9. 10. 2012, 22:19

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.