Bonjour,
j'ai cree une map contenant un pointeur vers un objet.
std::map<const char*,Sprite*> m_mapSprite;
std::map<const char*,Sprite*>::iterator seIterator;
1 - lorsque j'utilise la methode erase d'une map, est ce que cette methode appelle le destructeur de sprite?
2 - J'ai pu lire dans la faq consacre au stl que pour un vecteur, il fallait detruire le pointeur sur l'objet car un pointeur n'est pas un objet.
Je suppose que c'est la meme chose pour une map mais j'aimerais en etre sur.
3 - voila ce que j'ai fait pour effacer l'element pointe par seIterator a une certaine condition:
1 2 3 4 5 6 7
|
pour chaque element de la map(un for sans incrementation)
si condition est vrai
delete seIterator->second;
m_mapSprite.erase(seIterator++);
sinon
seIterator++ |
est ce correct?
quelques remarques:
-ma map contient en realite des objets derive de Sprite et que Sprite est la classe mere virtuel.
-Lorsque je debug je vois bien les elements disparaitre de la map. Cependant je ne vois pas clairement la memoire alloue a mon programme baisse ou monte clairement dans le gestionnaire de memoire. c'est ce qui me fait douter
merci pour votre aide
Partager