Uso della memoria da parte di un programma
Nozione di STACK E HEAP
Leggendo lo schema sopra riportato, la memoria è composta da:
Code: contiene le istruzioni eseguibili del programma stesso (il codice);
Variabili globali: servono all'esecuzione di tutto il programma, che non sono definito all'interno delle funzioni ma al di fuori. Valgono globalmente nel programma;
Heap: è un 'area di memoria riservata all'allocazione dinamica degli oggetti che non hanno una dimensione predefinita, ma destinati a crescere in modo indefinito;
Stack: area di memoria dove vengono messe le chiamate funzionali, quindi contenente i Value Type.
In particolare la Stack, è composto da vari stack frames (o activation records) dove vengono allocate le informazioni riguardati le chiamate. Nello Stack Frame sono presenti le variabili locali definite all'interno della funzione. Ogni volta che una funzione finisce la sua esecuzione, il suo stack frame viene rimosso.
Lo stack ha una struttura fatta a pila. Le nuove entrate vengono aggiunte in cima e via via vengono rimosse. Vengono definite LiFO(Last In First Out) in quanto sono le ultime ad entrare e le prime ad uscire.
La dimensione della Stack di solito è 1GB per 32 bit e 4GB per 64 bit. Se il programma eccede la dimensione messa a disposizione si genera quella che viene chiamata : stack overflow.
Commenti
Posta un commento