Sobes.tech
Junior — Middle

Čo môže viesť k pretečeniu zásobníka v programe?

sobes.tech AI

Odpoveď od AI

Pretečenie zásobníka (stack overflow) nastáva, keď sa zásobník volaní zaplní kvôli príliš hlbokej rekurzii alebo nekonečným volaniam funkcií.

Hlavné príčiny:

  • Nekonečná rekurzia — funkcia volá sama seba bez podmienky ukončenia.
  • Príliš hlboká rekurzia — aj s podmienkou ukončenia, ale hĺbka volaní je príliš veľká (napríklad pri spracovaní veľkých dátových štruktúr).
  • Cyklické volania funkcií — funkcie sa volajú navzájom v kruhu bez ukončenia.

Príklad nekonečnej rekurzie v C#:

void Recursive()
{
    Recursive(); // bez podmienky ukončenia
}

Recursive();

Aby ste predišli pretečeniu zásobníka, vždy musíte mať správnu podmienku ukončenia rekurzie alebo používať iteratívne algoritmy, ak môže byť hĺbka volaní veľká.