Menu
Coddy logo textTech

Memoria Stack vs. Heap

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 31 di 63.

Quando il tuo programma C viene eseguito, usa due aree di memoria distinte: lo stack e l'heap. Capire la differenza tra queste aree di memoria è fondamentale per programmare efficacemente in C, soprattutto quando lavori con i puntatori e l'allocazione dinamica della memoria.

Lo stack viene usato per l’allocazione statica della memoria. È qui che vengono memorizzate le variabili locali, i parametri delle funzioni e le informazioni sulle chiamate di funzione. Lo stack è gestito automaticamente dal sistema: quando dichiari una variabile locale, la memoria viene allocata nello stack e, quando la variabile esce dal proprio ambito, quella memoria viene liberata automaticamente.

void function() {
    int x = 10;  // Allocato nello stack
    char arr[100];  // Anch'esso allocato nello stack
    // La memoria viene liberata automaticamente quando function termina
}

Lo heap viene usato per l’allocazione dinamica della memoria. È un’area di memoria più ampia che puoi richiedere durante l’esecuzione del programma.

A differenza dello stack, l’heap richiede una gestione manuale: devi richiedere esplicitamente la memoria e poi liberarla quando hai finito. Questo ti dà più controllo, ma anche più responsabilità.

La differenza principale riguarda la gestione: la memoria stack è automatica e ha dimensioni limitate, mentre la memoria heap è manuale e molto più grande. Nelle prossime lezioni imparerai a lavorare con la memoria heap usando funzioni come malloc() e free().

Provalo tu

Questa lezione non include una sfida di codice.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online