Quando si fa doppio clic sull’eseguibile, la memoria del processo viene allocata dal sistema operativo e l’eseguibile viene caricato nella memoria allocata dal loader del sistema operativo. Il seguente layout di memoria semplificato dovrebbe aiutarti a visualizzare il concetto; notare che la struttura dell’eseguibile sul disco è simile alla struttura dell’eseguibile in memoria:

Nel diagramma precedente, l’heap viene utilizzato per l’allocazione dinamica della memoria durante il programma
l’esecuzione e il suo contenuto può variare. Lo stack viene utilizzato per memorizzare le variabili locali,
argomenti della funzione e l’indirizzo di ritorno. Imparerai a conoscere lo stack in future lezioni del sito. Il layout di memoria mostrato in precedenza è notevolmente semplificato e il file e  le posizioni dei componenti possono essere in qualsiasi ordine.
memoria in dettaglio nei prossimi capitoli. Nello screenshot seguente, puoi vedere che il file eseguibile è stato caricato all’indirizzo di memoria 0x010F0000 e tutte le sezioni del file anche eseguibili sono stati caricati nella memoria. Un punto da ricordare è che la memoria
l’indirizzo che stai guardando è l’indirizzo virtuale, non l’indirizzo della memoria fisica. Il l’indirizzo virtuale verrà eventualmente tradotto in un indirizzo di memoria fisica.