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
Partager