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