Junior — Middle
Co může vést k přetečení zásobníku v programu?
sobes.tech AI
Odpověď od AI
Přetečení zásobníku (stack overflow) nastává, když se zásobník volání zaplní kvůli příliš hluboké rekurzi nebo nekonečným voláním funkcí.
Hlavní příčiny:
- Nekonečná rekurze — funkce volá sama sebe bez podmínky ukončení.
- Příliš hluboká rekurze — i s podmínkou ukončení, ale hloubka volání je příliš velká (například při zpracování velkých datových struktur).
- Cyklické volání funkcí — funkce se volají navzájem v kruhu bez ukončení.
Příklad nekonečné rekurze v C#:
void Recursive()
{
Recursive(); // bez podmínky ukončení
}
Recursive();
Aby se zabránilo přetečení zásobníku, je třeba vždy mít správnou podmínku ukončení rekurze nebo používat iterativní algoritmy, pokud může být hloubka volání velká.