Autodidatta ha scritto:
Sono stato impreciso nella terminologia ma solo per brevità
Molto spesso, questo modo di fare in informatica non va bene. Devi essere molto preciso perché la terminologia è importantissima.
Però la cosa che continuo a non capire è il meccanismo per cui, dovunque il compilatore metta la stringa, io ogni tanto me la trovi sovrascritta
quando faccio una stringa come char*
Hai scritto un po' di cose, a dir poco, inesatte o poco sensate ... il che dimostra che non hai acquisito il concetto di puntatore (fidati ...).
Se trovi sovrascritta una stringa i casi sono solamente due:
1) il tuo codice è sbagliato e scrive dove non dovrebbe (cosa fattibilissima in C)
2) non hai mai allocato lo spazio per la stringa, quindi è il sistema che ci scrive (giustamente) dentro
Questo fatto è successo pure ad altre persone, non sono il solo.
A me mai, a meno che non incorro in quei due errori che ti ho segnalato ...
Se non compio errori di programmazione nell'uso di qualche puntatore non dovrebbe succedere questo. Sbaglio?
Non sbagli, di conseguenza commetti degli errori.
com'è possibile che il compilatore metta una stringa nell'area codice? Perché dovrebbe farlo?
Come ti è stato detto, anche se non in maniera precisa, perché quella stringa non varia mai (è costante). Ad esempio, se scrivi con una printf
"Il risultato e'"
questa stringa starà nell'area dati costanti (non nell'area del codice), comunque nel file .exe.
@vbextreme
Nei sistemi moderni si adottano tutti i meccanismi previsti (vedi Nx bit della CPU).