Fuite de mémoire dans les appels imbriqués ?
Bonjour à tous,
Je suis face à un problème que je ne parviens pas à résoudre.
Soit la ligne suivante, où up et tangage sont des vecteurs (au sens géométrique, pas au sens de structure de stockage) :
Code:
1 2
|
tangage->add(up->times(0.1)); |
La fonction add(Vecteur*) ajoute l'argument à son receveur, et la fonction times(double) renvoie le receveur multiplié par le scalaire passé en argument.
La méthode times(double) crée un nouveau Vecteur, il y a donc un toto=new Vecteur(blabla), et lui donne comme coordonnées les valeurs qui vont bien.
Est-ce que cet appel à new Vecteur(blabla) est à l'origine d'une fuite de mémoire ?
Je me pose la question car je ne vois pas à quel moment le resultat de up->times(0.1) sera détruit.
Si il y a effectuvement une fuite de mémoire, comment faut-il faire ?
Il faut avouer que
Code:
1 2 3 4
|
Vecteur* toto = up->times(0.1);
tangage->add(toto);
delete toto; |
est un peu lourd, et encore, il n'y a qu'un niveau d'imbrication.