Ho un dubbio sull'assegnazione di un campo di una classe con un oggetto di tipo char * non allocato con malloc ma come un letterale "xxxxxx", ad esempio:
Nel costruttore di A inizializzo il campo value con un puntatore a char che è stato inizializzato direttamente nella chiamata del costruttore con la 'stringa' "ciao". Quello che mi chiedo è quale sia il tempo di vita della zona di memoria allocata per "ciao", se cioè "ciao" viene trattato come un array di caratteri allocato staticamente che quindi, essendo una variabile locale viene deallocato all'uscita della funzione create(), oppure continua ad esistere dopo la funzione. Nel primo caso si assegna al campo value l'indirizzo di una zona di memoria non piu valida; ad ogni modo il compilatore non mi segnala problemi, quindi dovrebbe essere giusto, ma voglio essere sicuro.codice:class A{ const char * value; A(const char * v){ value = v; } } Quindi in una funzione posso fare: A * create(){ a = new A("ciao"); return a; }
Ciao e grazie.