Otevřít hlavní menu

Změny

FreeMem

Přidáno 1 646 bajtů, 5. 10. 2012, 13:48
Vytvorená stránka „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 pro...“
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 [[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í
: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.

[[Category:System]]
[[Category:Procedúry System]]