Originariamente inviato da UltraBeginner
int pippo()
{
int a=4,b=5;

return a + b

}
In questo caso dopo l esecuzione di pippo a e b vengono distrutti.
Certo ... sono variabili "automatiche".

Originariamente inviato da UltraBeginner
char * pippo(char * p)
{
char *c;

c= new char[strlen(p)]
strcpy(c,p);
return c;

}

Nel secondo caso quando chiamo pippo la memoria allocata da c= new char[strlen(p)] non viene distrutta giusto?
La variabile 'c' pure lei è "automatica", quindi viene "distrutta" al termine della funzione.
Quello che non viene distrutto è ovviamente il blocco di memoria allocato (che non c'entra nulla con la funzione e le variabili) e di cui fai ritornare il puntatore.
Tra l'altro dovresti allocare 1 carattere in più (strlen(p)+1) perché non hai allocato spazio per il carattere nullo.

Originariamente inviato da UltraBeginner
Scusate se la domanda vi sembra banale, ma sto studiando il C++ venendo dal C e sto trovando certi concetti veramente rognosi.
Questo c'entra relativamente poco con C++ (solo perché hai usato new invece di una malloc). Questo concetto vale in generale.