La memoria

  1. come si rappresenta la memoria ad alto livello
  2. rappresentazione più precisa, come vettore di celle
  3. un esempio di alcune variabili in memoria

La memoria di un calcolatore è un dispositivo in cui è possibile memorizzare dei dati. Ogni volta che si crea (dichiara) una nuova variabile, viene riservata un'area di memoria in cui viene memorizzato il valore della variabile. In altre parole, una parte della memoria viene impiegato per la memorizzazione del valore della variabile.

Per i programmi più semplici, si può pensare alla memoria come se fosse una lavagna: ogni volta che si dichiara una variabile, si disegna un quadrato; all'interno di questo quadrato si può scrivere (memorizzare) un valore.

Il modello semplificato di memoria come lavagna funziona bene solo per alcuni tipi di programmi. Esistono delle tecniche di programmazione che richiedono un modello più dettagliato di come è fatta la memoria.

Per gli argomenti che si vedranno in questo corso, è sufficiente dire che la memoria è un vettore di byte. Non ci interessa la sua dimensione.

Va notato che anche questo modello della memoria è una semplificazione, che comunque è sufficientemente preciso per gli argomenti trattari in questo corso.

Nel seguito, rappresentiamo la memoria come nella figura accanto, in cui ogni rettangolo è un byte. Gli indici di questo vettore verranno scritti solo quando necessari.

Ogni volta che si dichiara una variabile, viene allocata (riservata) una zona di memoria per essa. La grandezza di questa zona dipende dal tipo della variabile: per esempio, le variabili di tipo char occupano un solo byte, mentre gli interi ne occupano 4.

Il disegno mostra come potrebbe essere strutturata la memoria se un programma usa una variabile intera a e una variabile carattere b: la variabile a occupa quattro byte consecutivi nella memoria, mentre la variabile b ne occupa uno solo. Ogni volta che si assegna ad a un valore, questo viene scritto nei byte che le sono assegnati. Ogni volta che il valore di a viene usato (per esempio per fare una stampa del valore di a, come printf("%d\n",a);, o per fare un calcolo come b=a+c;), il calcolatore va a cercare il valore in quei quattro byte.