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á.