Per periodo di vita di una varabile s’intende l’intervallo di tempo nel quale la variabile stessa esiste durante la fase di esecuzione del programma. Questo concetto non si applica alle funzioni, in quanto queste ultime esistono per tutta la durata d’esecuzione del programma.
In particolare in C++ si dice che una variabile ha periodo di vita globale se essa viene allocata in memoria non appena viene avviata l’esecuzione del programma e vi permane fino alla fine del programma stesso.
Tutte le variabili globali, in mancanza di una precisa inizializzazione vengono poste automaticamente a zero.
Invece, le variabili locali, dette anche variabili automatiche (auto), hanno un periodo di vita limitato; vengono allocate in memoria ogni volta che l’esecuzione prevede l’entrata nel blocco in cui sono dichiarate e deallocate quando il blocco viene completato, liberando la memoria che può essere riutilizzata.
Le seguenti regole permettono al compilatore di stabilire quando una variabile deve essere considerata globale o locale:
- le variabili dichiarate fuori da tutte le funzioni che compongono il programma (livello esterno) hanno sempre un periodo di vita globale;
- le variabili dichiarate a livello interno, cioè dentro un blocco, hanno normalmente un periodo di vita locale. E’ possibile però, come vedremo in seguito, forzare anche per queste variabili il periodo di vita in modo che esso divenga l’intero intervallo di tempo necessario per l’esecuzione del programma;
- i parametri formali che compaiono all’interno dell’intestazione di una funzione, vengono considerati a tutti gli effetti come varabili locali appartenenti al blocco associato alla funzione.