- \item Lo \itindex{heap} \textit{heap}, detto anche \textit{free
- store}. Tecnicamente lo si può considerare l'estensione del segmento dei
- dati non inizializzati, a cui di solito è posto giusto di seguito. Questo
- è il segmento che viene utilizzato per l'allocazione dinamica della
- memoria. Lo \textit{heap} può essere ridimensionato allargandolo e
- restringendolo per allocare e disallocare la memoria dinamica con le
- apposite funzioni (vedi sez.~\ref{sec:proc_mem_alloc}), ma il suo limite
- inferiore, quello adiacente al segmento dei dati non inizializzati, ha una
- posizione fissa.
- \end{itemize*}
-
-\item Il segmento di \itindex{stack} \textit{stack}, che contiene quello che
- viene chiamato \textit{stack} del programma. Tutte le volte che si effettua
- una chiamata ad una funzione è qui che viene salvato l'indirizzo di ritorno
- e le informazioni dello stato del chiamante (come il contenuto di alcuni
- registri della CPU), poi la funzione chiamata alloca qui lo spazio per le
- sue variabili locali. Tutti questi dati vengono \textit{impilati} (da questo
- viene il nome \itindex{stack} \textit{stack}) in sequenza uno sull'altro; in
- questo modo le funzioni possono essere chiamate ricorsivamente. Al ritorno
- della funzione lo spazio è automaticamente rilasciato e
- ``\textsl{ripulito}''.\footnote{il compilatore si incarica di generare
- automaticamente il codice necessario, seguendo quella che viene chiamata
- una \textit{calling convention}; quella standard usata con il C ed il C++
- è detta \textit{cdecl} e prevede che gli argomenti siano caricati nello
- \textit{stack} dal chiamante da destra a sinistra, e che sia il chiamante
- stesso ad eseguire la ripulitura dello \textit{stack} al ritorno della
- funzione, se ne possono però utilizzare di alternative (ad esempio nel
- Pascal gli argomenti sono inseriti da sinistra a destra ed è compito del
- chiamato ripulire lo \textit{stack}), in genere non ci si deve preoccupare
- di questo fintanto che non si mescolano funzioni scritte con linguaggi
- diversi.}
+ \index{variabili!globali|)} \index{variabili!statiche|)}
+ \item Lo \textit{heap}, detto anche \textit{free store}. Tecnicamente lo si
+ può considerare l'estensione del segmento dei dati non inizializzati, a
+ cui di solito è posto giusto di seguito. Questo è il segmento che viene
+ utilizzato per l'allocazione dinamica della memoria. Lo \textit{heap} può
+ essere ridimensionato allargandolo e restringendolo per allocare e
+ disallocare la memoria dinamica con le apposite funzioni (vedi
+ sez.~\ref{sec:proc_mem_alloc}), ma il suo limite inferiore, quello
+ adiacente al segmento dei dati non inizializzati, ha una posizione fissa.
+ \end{itemize}
+\item Il segmento di \textit{stack}, che contiene quello che viene chiamato lo
+ ``\textit{stack}'' del programma. Tutte le volte che si effettua una
+ chiamata ad una funzione è qui che viene salvato l'indirizzo di ritorno e le
+ informazioni dello stato del chiamante (come il contenuto di alcuni registri
+ della CPU), poi la funzione chiamata alloca qui lo spazio per le sue
+ variabili locali. Tutti questi dati vengono \textit{impilati} (da questo
+ viene il nome \textit{stack}) in sequenza uno sull'altro; in questo modo le
+ funzioni possono essere chiamate ricorsivamente. Al ritorno della funzione
+ lo spazio è automaticamente rilasciato e ``\textsl{ripulito}''.\footnote{il
+ compilatore si incarica di generare automaticamente il codice necessario,
+ seguendo quella che viene chiamata una \textit{calling convention}; quella
+ standard usata con il C ed il C++ è detta \textit{cdecl} e prevede che gli
+ argomenti siano caricati nello \textit{stack} dal chiamante da destra a
+ sinistra, e che sia il chiamante stesso ad eseguire la ripulitura dello
+ \textit{stack} al ritorno della funzione, se ne possono però utilizzare di
+ alternative (ad esempio nel Pascal gli argomenti sono inseriti da sinistra
+ a destra ed è compito del chiamato ripulire lo \textit{stack}), in genere
+ non ci si deve preoccupare di questo fintanto che non si mescolano
+ funzioni scritte con linguaggi diversi.}