next up previous contents
Next: Porovnávání ukazatelů, které ukazují Up: Ukazatele Previous: Program neuvolňuje dynamicky alokovaná   Obsah

Ukazatele odkazují do nealokované paměti

Pokud se nějakým způsobem do proměnné typu ukazatel dostane odkaz do nealokované paměti, je zle. Pokud program do těchto míst něco zapíše může to vést na některých systémech (DOS) až k pádu celého systému. Podle zákonů schválnosti totiž vždy přepíšete tu oblast paměti, kde je nahrán operační systém. Toto se týká reálného režimu. V protected módu program spolehlivě skončí s runtime error.

Je dobré důsledně nastavovat ukazatele na nil po každém volání dispose. Pak máte možnost jednoduchým porovnáním zjistit, zda ukazatel na něco ukazuje nebo ne. Toto testování je zvláště potřebné na začátku každého podprogramu, který má jako parametr ukazatel. Nikdy si totiž nemůžete být jisti, že takový podprogram budete volat jenom se správnou hodnotou ukazatele. Často se může stát například toto:

  ...
  list := nil;      {nebo ještě hůře: dispose(list) bez nastavení na nil}
  ...
  ListRelease(list);{list je nil}
  ...



David Martinek 2002-10-01