Riassunti

Appunti universitari in formato Markdown da Obsidian.

Gestione della memoria

download Scarica MD

In questa sezione viene illustrato come le variabili vengono allocate in memoria (indirizzi) e come gestirle tramite puntatori.

Allocazione Statica e Indirizzi

Quando dichiariamo una variabile int a = 5;, il sistema scrive il valore 5 in uno specifico indirizzo di memoria (es. 0x3).

  • cout << a; stampa il valore (5).
  • cout << &a; stampa l'indirizzo di memoria (0x3).

Array Statici: Dichiarando int b[5] = {1, 2, 3, 4, 5};, i valori vengono memorizzati in indirizzi contigui. Il nome dell'array b corrisponde all'indirizzo del primo elemento (0x1). Stampando &b[i] si ottengono gli indirizzi sequenziali degli elementi (es. 0x1, 0x2, 0x3...).

Allocazione Dinamica (Heap)

Per allocare memoria dinamicamente si usa l'operatore new.

  • Array Dinamico: int* b = new int[5]; alloca un blocco di 5 interi.
  • Variabile Singola: int* a = new int(1); crea un puntatore a un singolo intero inizializzato a 1.

Nota: La memoria allocata con new deve essere liberata manualmente con delete[] b (per array) o delete a (per variabili singole) per evitare memory leak.