Bonjour,

Une question que je me pose sur l'allocation de mémoire dans les listes et les vecteurs :

Est-il possible de stocker dans un pointeur l'adresse d'un objet inséré dans une liste ou dans un vecteur et d'être sûr que ce pointeur pointe toujours sur l'objet ?

En gros, faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
std::list conteneur;  ou std::vector conteneur;
cObject objet;
cObject *pObjet = &objet;
 
conteneur.push_back(objet);
Pour les listes, il s'agit de listes chainées, donc à priori, pas de soucis...

Mais pour les vecteurs, que se passe-t-il en cas de réallocation (pour cause de dépassement, par exemple) ?

Est-ce qu'au moment de la réallocation, l'objet lui-même est déplacé ?
Ou est-ce que seulement la zone réservée pour les itérateurs est réallouée et seulement les itérateurs sont déplacés ?

Merci !