Le code C++ suivant est-il une fuite de mémoire? Si je comprends bien, push_back de toute collection/conteneur std fait toujours une copie. Donc, si la nouvelle chaîne est copiée, rien ne peut jamais supprimer la chaîne new'd droite? puisqu'il n'y a pas de référence après le push_back ...C++: push_back (new Object()) est-il une fuite de mémoire?
Est-ce que je suis correct ou mauvais ici?
Merci.
JBU
edit: Je pense que je me trompe, car nouvelle retournera un pointeur ... nous avons toujours le pointeur pour pouvoir supprimer la nouvelle chaîne
Cela dépend de la définition de 'list'. –
Dépend de ce que 'list' est. En supposant que c'est une 'std :: liste', @UncleBens est correct: il peut toujours être possible de nettoyer correctement la plupart du temps. Mais vous devez faire ce nettoyage manuellement; 'std :: list' ne le fera pas pour vous. –
aschepler
Oui. Parce que la variable 'list' est en fait d'un type qui a une fonction appelée 'push_back' avec un corps vide. –