Salut tout le monde,
Je programme assez bien le C++, mais je ne vois pas toujours bien ce qui se passe au niveau allocation de la mémoire.
Genre, j'ai une classe dont une méthode fait un retour par référence.
Si je fais
double& MaClasse::MaMethode()
{
double* a=new double(2);
return *a;
}
J'ai alloué de la mémoire qui ne sera pas libérée à la fin de la méthode puisque j'utilise "new".
Mais lorsque j'appelle ma méthode, je ne peux plus libérer la mémoire puisque je reçois non pas un pointeur en retour mais un objet, donc impossible de faire delete sur le "double a" retourné...
Où est l'erreur ? Faut il absolument éviter d'allouer de la mémoier avec new dans ce cas ?
Ou peut être la valeur retournée sera "locale" dans la section d'appel à la méthode, et sera détruite à la fin de cette section ?
Merci d'avance... Configuration: Dev C++

