Il Sun, 05 May 2013 13:28:00 +0200, NERO23 ha scritto:
> Con il codice che ho riportato sotto (è solo un esempio...), nella
> memoria heap viene memorizzato solo l'indirizzo del nome
Viene allocata la memoria per la struttura contenente `nome` e `cognome`.
> mentre Mario è
> memorizzato nello stack?
>
La stringa "Mario" viene memorizzata in una area di memoria statica.
Inoltre se modifichi l'array allocato per tale stringa, ottieni un
undefined behaviour.
> [...]
>
> #include <stdio.h>
>
stdlib.h
> int main(void)
> {
> struct dati
> {
> char *nome;
> char *cognome;
> } ;
> typedef struct dati datiImpiegato;
>
> datiImpiegato *impiegato;
> impiegato = (datiImpiegato *) malloc(sizeof(datiImpiegato));
>
> impiegato->nome="Mario";
> impiegato->cognome="Rossi";
>
Se compili con -Wwrite-strings (usando GCC), ottieni un warning.
nome e cognome dovrebbero essere const char, altrimenti il tuo codice
potrebbe non funzionare con alcuni compilatori.
> return 0;
> }
Ciao Manlio