Bonjour a tous,

J'ai un probleme de fuite de memoire sur un programme qui fini par faire planter mon ordinateur :

donc pour expliquer en gros mon programme. J'ai un objet de type "Figure" qui contient un vecteur d'entier, un vecteur de pointeurs sur d'autres objets de type figure, ainsi que plusieurs parametre entier / char etc.

Je cre de nombreuses instances de ce type Figure dans un grands vecteur de pointeurs que j'initialise avec new Figure etc...

Une fois ceci fait je fusionne plusieurs de ces figures entre elles. En gros je les fusionne deux par deux, une des figures recoit les attributs de la seconde et je voudrais detruire la seconde pour liberer completement sa memoire.

- il me semble que le compilateur se charger automatiquement de liberer la memoire lorsque ceci etait necessaire. Comment cela fonctionne et comment peut on s'assurer que cela soit fait ? (ie. il faut que le compilateur sache que l'on ne se sert plus de l'objet ?)

- est-ce que utiliser la commande "delete" sur un pointeur sur une "figure" est la bonne solution pour liberer cette memoire ? J'utilise cette fonction mais le programme plante lorsque j'essaye d'acceder a des pointeurs qui ne pointent plus sur rien. J'ai essaye de corriger ce probleme en ajouter une boucle if (pointeur ==NULL) mais la boucle ne marche visiblement pas. Une solution peut-etre pour tester sur un pointeur pointe toujours sur un element ou si cet element a ete detruit ?

- Une solution alternative que j'utilise est de lancer la fonction "clear" sur les vecteurs de ma class. La classe entiere n'est pas detruite mais la memoire associe aux vecteurs de la ma classe est libere non ? Cela reduit le probleme mais ne le corrige pas completement, que reste-t-il d'un vecteur apres y avoir effectuer un .clear et occupe-t-il toujours de l'espace memoire ?

- Enfin derniere question concernant le destructeur. Est-il utile de le definir dans ce cas ou le destructeur par default fait le travail ? J'ai du mal a voir dans quel cas definir manuellement le destructeur peut etre utile.

Merci pour votre aide