Junior — Middle
Was kann zu einem Stapelüberlauf in einem Programm führen?
sobes.tech KI
Antwort von AI
Ein Stack-Overflow tritt auf, wenn der Aufrufstapel durch zu tiefe Rekursion oder unendliche Funktionsaufrufe überläuft.
Hauptursachen:
- Unendliche Rekursion — die Funktion ruft sich selbst ohne Abbruchbedingung auf.
- Zu tiefe Rekursion — auch mit Abbruchbedingung, aber die Tiefe der Aufrufe ist zu groß (z.B. bei der Verarbeitung großer Datenstrukturen).
- Zyklische Funktionsaufrufe — Funktionen rufen sich gegenseitig in einer Schleife ohne Ende auf.
Beispiel für unendliche Rekursion in C#:
void Recursive()
{
Recursive(); // keine Abbruchbedingung
}
Recursive();
Um einen Stack-Overflow zu vermeiden, sollte immer eine korrekte Abbruchbedingung für die Rekursion vorhanden sein oder iterative Algorithmen verwendet werden, wenn die Aufruftiefe groß sein kann.