0Pricing
C++ Academy · Lektion

Stack-Allokation

Verstehen, wie automatische Speicherung funktioniert

Stack-Allokation ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Automatischer Speicher

Lokale Variablen liegen im automatischen Speicher, der üblicherweise als Stack bezeichnet wird. Sie werden erstellt, wenn die Ausführung ihren Gültigkeitsbereich betritt, und zerstört, wenn sie ihn verlässt.

#include <iostream>

int main() {
    int x = 42;          // on the stack
    double pi = 3.14;    // on the stack
    std::cout << x << " " << pi << "\n";
}

Der Stack wächst und schrumpft

Jeder Funktionsaufruf legt einen Stack-Frame mit seinen lokalen Variablen ab. Wenn die Funktion zurückkehrt, wird der Frame entfernt und die lokalen Variablen verschwinden – eine manuelle Bereinigung ist nicht erforderlich.

#include <iostream>

void greet() {
    int local = 7;          // pushed on call
    std::cout << local << "\n";
}                            // popped on return

int main() { greet(); }

LIFO-Reihenfolge

Der Stack arbeitet nach dem Prinzip Last In, First Out. Die zuletzt erstellte lokale Variable wird beim Ende des Gültigkeitsbereichs zuerst zerstört.

#include <iostream>

int main() {
    int a = 1;
    {
        int b = 2;   // created after a
        std::cout << b << "\n";
    }                // b destroyed first
    std::cout << a << "\n";
}

Schnell und kostengünstig

Die Stack-Allokation ist äußerst schnell: Es wird lediglich der Stack-Zeiger verschoben. Es ist keine Suche nach freiem Speicher und keine für den Heap erforderliche Verwaltungsarbeit nötig.

Der Gültigkeitsbereich bestimmt die Lebensdauer

Ein Stack-Objekt ist nur innerhalb des Blocks gültig, in dem es deklariert wurde. Verschachtelte Blöcke haben ihren eigenen Gültigkeitsbereich.

#include <iostream>

int main() {
    for (int i = 0; i < 3; ++i) {
        int square = i * i;   // recreated each iteration
        std::cout << square << "\n";
    }
}

Begrenzte Größe

Der Stack hat eine feste, begrenzte Größe (oft einige Megabyte). Das Anlegen großer Arrays auf dem Stack kann zu einem Absturz durch Stack Overflow führen.

// Risky: a large fixed array on the stack
int big[1000000];   // may overflow the stack

Eine Stack-Adresse zurückzugeben ist ein Fehler

Geben Sie niemals einen Zeiger oder eine Referenz auf eine lokale Variable zurück. Sobald die Funktion zurückkehrt, ist dieser Speicher verschwunden und der Zeiger hängt ins Leere.

int* bad() {
    int local = 5;
    return &local;   // BUG: local dies here
}

Große Objekte per Referenz übergeben

Große Objekte auf den Stack zu kopieren, ist ineffizient. Übergeben Sie sie als const&, um das Kopieren zu vermeiden und den Stack-Verbrauch gering zu halten.

#include <string>

void print(const std::string& s) {  // no copy
    // use s
}

Stack-Objekte benötigen kein delete

Da der Compiler ihre Lebensdauer automatisch verwaltet, dürfen Sie niemals delete für eine Stack-Variable aufrufen.

#include <iostream>

int main() {
    int n = 10;
    // delete &n;   // ERROR: not heap-allocated
    std::cout << n << "\n";
}

Arrays auf dem Stack

Arrays mit fester, bekannter Länge liegen auf dem Stack und werden automatisch freigegeben, sobald der Gültigkeitsbereich endet.

#include <iostream>

int main() {
    int values[3] = {10, 20, 30};
    for (int v : values) std::cout << v << "\n";
}

Wann Sie den Stack bevorzugen sollten

Bevorzugen Sie den Stack für kleine, kurzlebige Objekte, deren Größe zur Compile-Zeit bekannt ist. Er ist schneller und räumt sich selbst auf – verwenden Sie den Heap nur, wenn Sie ihn wirklich benötigen.

Kurze Überprüfung

Testen Sie Ihr Verständnis der Stack-Allokation.

Zusammenfassung

Sie haben gelernt, dass die Stack-Allokation automatische Speicherung verwendet, die an den Gültigkeitsbereich gebunden ist: Variablen werden beim Eintritt erzeugt und beim Verlassen in LIFO-Reihenfolge zerstört. Sie ist schnell, räumt sich selbst auf und ist in ihrer Größe begrenzt. Geben Sie niemals die Adressen lokaler Variablen zurück und verwenden Sie niemals delete für Stack-Objekte.

Häufig gestellte Fragen

Ist die Lektion „Stack-Allokation“ kostenlos?

Ja — der vollständige Text von „Stack-Allokation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Stack-Allokation“?

Verstehen, wie automatische Speicherung funktioniert Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Stack-Allokation“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Stack-Allokation
  2. Heap-Allokation mit new/delete
  3. Objektlebensdauer
  4. Häufige Speicherfehler
← Zurück zu C++ Academy