next up previous contents
Next: Ukazatele odkazují do nealokované Up: Ukazatele Previous: Ukazatele   Obsah

Program neuvolňuje dynamicky alokovaná data

Paměť žádného systému není neomezená, proto je třeba veškerou dynamicky alokovanou paměť uvolnit, když už ji nepotřebujeme. Pro uvolňování dynamicky alokované paměti se používá procedura dispose.

Uvolňování paměti může činit potíže zvláště u složitých datových struktur jako jsou lineární spojové seznamy, stromy a podobně. V těchto případech je dobré si ověřit, že jsme všechnu paměť skutečně uvolnili. V DOSových verzích Pascalu to je možné zařídit pomocí funkce MemAvail, která vrací počet bytů volné paměti. Zmíněné ověřování se pak zařídí takto v hlavním programu:

var
  mistoPred, mistoPo  : longint;
begin
  mistoPred := MemAvail;

  {...vlastní program provádějící alokace a dealokace...}

  mistoPo := MemAvail;
  if (mistoPred <> mistoPo) then
    writeln("V paměti zůstalo ", mistoPred - mistoPo, "B!");
end.

Toto funguje jenom v DOSu! V Delphi lze něco podobného zajistit pomocí funkcí Windows API. Jak je to v Kylixu nevím.



David Martinek 2002-10-01