lima-city: Webhosting, Domains und Cloud
3 Pluspunkte 0 Minuspunkte
Was ist ein Beispiel für einen Stack Overflow in C?
von  

1 Antwort

2 Pluspunkte 0 Minuspunkte

In C und vielen anderen Programmiersprachen wird der Stack (Stapelspeicher) verwendet, um Informationen über Funktionen zu speichern, während sie ausgeführt werden. Das sind z.B lokale Variablen, Funktionsparameter und die Rückkehradressen. 

void test(int x) {

    int y = x; // lokale Variable "y" wird auf dem Stack gespeichert und gelöscht wenn die Funktion beendet ist
    
}

Wenn eine Funktion aufgerufen wird, werden die lokalen Variablen und die Rücksprungadresse auf dem Stack abgelegt. Wenn die Funktion beendet wird, werden diese Informationen wieder vom Stack entfernt. Wenn jedoch zu viele Funktionen verschachtelt sind oder wenn eine Funktion rekursiv aufgerufen wird (das bedeutet, dass sie sich selbst aufruft), kann der Stapelspeicher erschöpft sein.

void test(int x) {

    int y = x; // lokale Variable

    test(x); // Funktion ruft sich selbst auf
    
}

Diese Funktion ruft sich immer wieder selbst auf. Wenn die Funktion aufgerufen wird erstellt sie die lokale Variable "y". Danach ruft sie sich selbst auf. Dabei wird ein neuer Stack für die Funkton angelegt. In diesem Stack wird auch wieder eine lokale Variable gespeichert und die Funktion erneut aufgerufen. Und dann wieder, und wieder. Wie du siehst kommt die Funktion nie zur return Anweisung und erstellt in jedem Durchlauf einen neuen Stack mit einer neuen Variable. Irgendwann hasu du keinen Speicherplatz mehr frei und der Prozess wird beendet oder unerwartetes Verhalten zeigen.

von (622 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer