Supprimer un vector proprement - C++ - Programmation
Marsh Posté le 03-12-2007 à 19:19:03
le destructeur de chaque instance d'une classe est appelé automatiqement en fin de vie de l'instance :
- en fin de scope pour une instance automatique :
Code :
|
- à l'appel de delete pour une instance dynamique
Code :
|
Pour la destruction du CONTENU d'une instance de vector, le destructeur de vector appelle en
séquence le destructeur de chacun de ses éléments. Dans le cas d'un vecteur de pointeur, il faut
effectivement explicitement libérer la mémoire pointée .
Code :
|
En général, on évite de faire ça (sauf cas de force majeur). On préfére les vector de boost::smart_ptr.
Marsh Posté le 03-12-2007 à 19:32:01
Merci beaucoup c'était très clair et complet! Je n'ai donc pas à m'occuper de la destruction de vector.
Pour m'exercer je recode en C++ un petit programme que j'avais fait en C. C'est vraiment beaucoup plus simple.
Marsh Posté le 03-12-2007 à 18:53:08
Bonjour! Je suis plus habitué au C. Je me lance dans le C++ après une longue hésitation. Finalement je trouve ça très pratique mais c'est vraiment une autre façon de voir les choses.
Ma question: doit-on "supprimer" un vector après utilisation?
D'après la Faq de Developpez il faut d'abord supprimer ce qu'il contient (faire attention au cas des pointeurs). Mais je n'ai pas trouvé de précision sur le vecteur lui même. Comment on le supprime? C'est un objet, il a donc un destructeur?
Ca m'amène à une autre question: dans les cours que j'ai lu on parle de la création des destructeurs dans les class mais jamais de leur utilisation. C'est le programme qui les appelle à la fin du programme? On ne peut pas le faire manuellement?