Un indirizzo può essere rappresentato da un numero intero non negativo, quindi "spazio indirizzo" è un modo elegante per descrivere un insieme di numeri interi non negativi in modo che ogni intero rappresenti un indirizzo valido in la memoria disponibile per il tuo programma.
In alcuni casi, diversi spazi di indirizzi possono essere disponibili per il tuo programma: ad esempio, quando sei su un sistema che segue un'architettura di Harvard, il tuo programma ha due spazi di indirizzo: uno per il codice e uno per i dati. In casi del genere un numero intero non negativo non è più sufficiente per definire in modo univoco una posizione in memoria; devi anche specificare a quale dei due spazi indirizzo appartiene il numero intero.
L'implementazione di uno spazio di indirizzamento viene eseguita nell'hardware: un numero viene mappato su una posizione in memoria da parte di un'elettronica dedicata che controlla l'interfaccia tra la CPU e la memoria. I sistemi operativi controllano questo hardware allocando blocchi di memoria fisica a uno spazio di indirizzi virtuali di un programma in esecuzione.