So che ci sono sezioni come Stack, Heap, Codice e Dati. Stack/Heap usano la stessa sezione di memoria che possono crescere indipendentemente? Cos'è questa sezione di codice? Quando ho una funzione è una parte della pila o la sezione del codice? Inoltre, cos'è questo segmento di dati inizializzato/non inizializzato?Come è il layout di memoria di un programma C/C++?
Sono disponibili solo sezioni di memoria? Quando ho una variabile const, ciò che sta realmente accadendo è che il compilatore contrassegna una sezione di memoria come sola lettura o la inserisce in una sezione di memoria di sola lettura.
Dove vengono conservati i dati statici? Dove sono conservati i dati globali?
Eventuali buoni riferimenti/articoli per lo stesso?
Ho pensato che le sezioni di memoria e il layout sono indipendenti dal sistema operativo e hanno più a che fare con il compilatore. Il segmento Stack, Heap, Codice, Dati [Inizializzato, Non inizializzato] si verifica in tutto il sistema operativo? Quando c'è un dato statico, ciò che sta accadendo il compilatore ha capito che è statico, che cosa succederà, che cosa farà? È il compilatore che sta gestendo il programma e dovrebbe sapere cosa fare giusto? Tutti i compilatori non dovrebbero seguire standard comuni?
+1 per la curiosità e l'entusiasmo, ma miglioreresti enormemente le possibilità di ottenere risposte concrete se dovessi suddividerle in singole domande. –
Sarebbe più semplice rispondere alla tua domanda se abbiamo capito perché vuoi sapere e (perché è molto specifico per piattaforma/compilatore) su quale piattaforma stai mirando. In generale, sebbene la risposta a queste domande non sia rellavent a un programmatore C++ generale (con eccezioni come compilatore/driver di dispositivo), ciò che è più importante è la durata della vita dell'oggetto e il modo in cui i diversi tipi di oggetti influenzano la durata della vita. –