J'ai un vecteur que je remplis de pointeurs vers des objets. J'essaie d'apprendre la bonne gestion de la mémoire, et j'ai quelques questions générales:Que dois-je faire avant de supprimer des éléments dans un vecteur de pointeurs vers des objets alloués dynamiquement?
- Est-il vrai que lorsque j'en ai fini avec le vecteur, je dois faire une boucle et appeler supprimer sur chaque pointeur? Pourquoi ne dois-je pas appeler delete sur le vecteur ou toute autre variable que je déclare sans la nouvelle instruction, mais delete doit être appelé sur des pointeurs?
- C++ gère-t-il la libération de la mémoire des pointeurs si le vecteur est déclaré dans une fonction qui retourne (provoquant la sortie du vecteur)?
3: C++ libérera bien sûr la mémoire utilisée par les pointeurs, puisqu'ils sont alloués sur la pile. Mais les objets pointés par ces pointeurs sont très probablement alloués sur le tas et devront donc être supprimés. Et bien sûr, les pointeurs dans le vecteur pourraient pointer vers des objets alloués par pile, qui ne peuvent pas être supprimés. En règle générale, vous ne devez jamais stocker de pointeurs non const pour empiler des objets alloués dans un vecteur. – smerlin
Merci! C'était très clair! –