Menu
Coddy logo textTech

Stack vs. Heap Speicher

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 31 von 63.

Wenn Ihr C-Programm ausgeführt wird, verwendet es zwei verschiedene Speicherbereiche: den Stack und den Heap. Das Verständnis des Unterschieds zwischen diesen Speicherbereichen ist entscheidend für eine effektive C-Programmierung, insbesondere bei der Arbeit mit Pointern und dynamischer Speicherallokation.

Der Stack wird für die statische Speicherallokation verwendet. Hier werden Ihre lokalen Variablen, Funktionsparameter und Informationen zu Funktionsaufrufen gespeichert. Der Stack wird automatisch vom System verwaltet – wenn Sie eine lokale Variable deklarieren, wird Speicher auf dem Stack reserviert, und wenn die Variable ihren Gültigkeitsbereich verlässt, wird dieser Speicher automatisch freigegeben.

void function() {
    int x = 10;  // Auf dem Stack zugewiesen
    char arr[100];  // Ebenfalls auf dem Stack zugewiesen
    // Speicher wird automatisch freigegeben, wenn die Funktion endet
}

Der Heap wird für die dynamische Speicherzuweisung verwendet. Dies ist ein größerer Speicherpool, den Sie während der Programmausführung anfordern können.

Im Gegensatz zum Stack erfordert der Heap eine manuelle Verwaltung – Sie müssen explizit Speicher anfordern und ihn später wieder freigeben, wenn Sie fertig sind. Dies gibt Ihnen mehr Kontrolle, aber auch mehr Verantwortung.

Der entscheidende Unterschied liegt in der Verwaltung: Stack-Speicher ist automatisch und in der Größe begrenzt, während Heap-Speicher manuell und viel größer ist. In den kommenden Lektionen werden Sie lernen, wie man mit Heap-Speicher arbeitet, indem man Funktionen wie malloc() und free() verwendet.

Spickzettel

C-Programme verwenden zwei unterschiedliche Speicherbereiche:

Stack: Wird für die statische Speicherallokation verwendet. Speichert lokale Variablen, Funktionsparameter und Informationen zu Funktionsaufrufen. Der Speicher wird automatisch verwaltet – er wird reserviert, wenn Variablen deklariert werden, und freigegeben, wenn sie ihren Gültigkeitsbereich verlassen.

void function() {
    int x = 10;  // Auf dem Stack reserviert
    char arr[100];  // Ebenfalls auf dem Stack reserviert
    // Speicher wird automatisch freigegeben, wenn die Funktion endet
}

Heap: Wird für die dynamische Speicherallokation verwendet. Ein größerer Speicherpool, der eine manuelle Verwaltung erfordert – Sie müssen Speicher explizit mit Funktionen wie malloc() und free() anfordern und freigeben.

Hauptunterschied: Der Stack-Speicher ist automatisch und in der Größe begrenzt, während der Heap-Speicher manuell verwaltet wird und viel größer ist.

Probier es selbst

Diese Lektion enthält keine Programmieraufgabe.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow