Bonjour,

j'ai un gros problème avec l'utilisation de std::map.
Je m'arrache les cheveux de la tête.
Lorsque j'appelle ::clear () cela plante , sans aucune initialisation, le conteneur étant totalement vide.
Même avec quelques éléments

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
struct Mastruct
{
std :: string strDetail;
BOOL bBooleen ;
};
 
std::map<std::string ,MaStruct>  monConteneur; 
monConteneur.clear();/// plante

le code plante dans xtree de la STL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#if _HAS_ITERATOR_DEBUGGING
	void _Orphan_ptr(_Myt& _Cont, _Nodeptr _Ptr) const
		{	// orphan iterators with specified node pointers
		_Lockit _Lock(_LOCK_DEBUG);
		const_iterator **_Pnext = (const_iterator **)&_Cont._Myfirstiter;
		while (*_Pnext != 0)
			if ((*_Pnext)->_Ptr == _Myhead
				|| _Ptr != 0 && (*_Pnext)->_Ptr != _Ptr)
				_Pnext = (const_iterator **)&(*_Pnext)->_Mynextiter;
			else
				{	// orphan the iterator
				(*_Pnext)->_Mycont = 0;
				*_Pnext = (const_iterator *)(*_Pnext)->_Mynextiter;
				}
		}
 #endif /* _HAS_ITERATOR_DEBUGGING */

Pour des raisons obscures (*_Pnext) est différent de NULL ou 0x00000000
Quelqu'un a-t-il une idée ?

J'utilise VS2008,le projet est compilé avec l'option multithread