Problème sur pop_back() de std::list

BunoCS Messages postés 15331 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 7 décembre 2022 - 12 févr. 2010 à 16:26
BunoCS Messages postés 15331 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 7 décembre 2022 - 16 févr. 2010 à 13:54
Hello,
Je rencontres un souci au niveau de l'objet std::list que j'aimerais soumettre à votre expertise. Le code est sous Windows, Visual C++ 6.

Dans une classe, j'ai une liste de, disons, maillons.
std::list<Maillon> m_maList;


Dans ma classe, j'ai une fonction d'ajout de ce type
void addMaillon(Maillon * pMaillon)
{
  ...
  deleteIfNeeded();  // nettoyage si besoin
  ...
  m_maList.push_front(*pMaillon);
  ...
}


La fonction de nettoyage est de ce type
void deleteIfNeeded(void)
{
  ...
  while(m_maList.size() > seuil_fixe)
  {
    ...
    m_maList.pop_back();
    ...
  }
}


A un moment donné, de façon aléatoire, j'ai un plantage au niveau du pop_back(). Les traces mises en place me disent pourtant que les éléments de ma liste sont valides.

Avez-vous déjà eu ce genre de soucis? Avez-vous des pistes d'investigation?
Pensez-vous qu'un remplacement d'implémentation la STL (laquelle? SGI? STLport?) pourrait corriger le problème?

Merci de vos lumières.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

2 réponses

cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
12 févr. 2010 à 22:08
Je ne pense pas que ce soit un problème de la STL. Tu dois avoir des petits problèmes un peu "tricky" dans ton code.
Pour t'en assurer, fais toi un petit prototype qui utilise un minimum de code et qui met en jeu ta std::list. Je pense que le bug ne se reproduira pas.
Là pour le coup, il n'y a pas de secret, tu vas avoir un peu de mal à trouver l'origine du bug. Essaie de vérifier que l'objet n'ai pas été déjà détruit ou est été corrompu d'une manière ou une autre.

Bonne chance à toi, n'hésite pas à faire parts de tes avancés :)

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
BunoCS Messages postés 15331 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 7 décembre 2022 103
16 févr. 2010 à 13:54
J'aime les problèmes un peu "tricky"... euh non, en fait, j'aime pas ça!!!
Bon, je continue mon investigation. Je noterais ici si je trouve quelque chose...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0