PDA

Visualizza la versione completa : [C++] Teoria sulle funzioni


UltraBeginner
27-02-2007, 11:53
Ciao a tutti,

una breve domanda sulle funzioni

int pippo()
{
int a=4,b=5;

return a + b

}
In questo caso dopo l esecuzione di pippo a e b vengono distrutti.

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?

Scusate se la domanda vi sembra banale, ma sto studiando il C++ venendo dal C e sto trovando certi concetti veramente rognosi.

Grazie a tutti per le rispo!!! :ciauz: :ciauz: :ciauz:

Dr. Fiemost
27-02-2007, 12:07
La memoria allocata con new deve essere esplicitamente deallocata tramite delete o, nel caso di un vettore, con delete []

Il Pazzo
27-02-2007, 12:10
Non credo venga distrutta...

Mi pare in c++ si faccia


delete(c);

dove c mi pare sia il tuo puntatore...

Il Pazzo
27-02-2007, 12:11
ehheh sono stato battuto sul tempo dal dr...

Dr. Fiemost
27-02-2007, 12:22
Originariamente inviato da Il Pazzo
ehheh sono stato battuto sul tempo dal dr...
:biifu:


Scusate se la domanda vi sembra banale, ma sto studiando il C++ venendo dal C e sto trovando certi concetti veramente rognosi.
Per chiarire/approfondire i concetti del C++ ti consiglio di leggere le C++ FAQ Lite (http://geneura.ugr.es/~jmerelo/c++-faq/index.html)

UltraBeginner
27-02-2007, 12:26
Originariamente inviato da Dr. Fiemost
:biifu:


Per chiarire/approfondire i concetti del C++ ti consiglio di leggere le C++ FAQ Lite (http://geneura.ugr.es/~jmerelo/c++-faq/index.html)

Thanks!! :) Bel link!

andbin
27-02-2007, 12:34
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.

Loading