Ho avuto qualche problema con vs2008 SP1 eseguito in modalità di debug quando provo a disabilitare gli iteratori verificati. Il seguente programma riproduce il problema (un incidente nel distruttore string):Problema durante la disattivazione degli iteratori verificati in SP200 vs2008 (_HAS_ITERATOR_DEBUGGING = 0)
#define _HAS_ITERATOR_DEBUGGING 0
#include <sstream>
int do_stuff(std::string const& text)
{
std::string::const_iterator i(text.end());
return 0;
}
int main()
{
std::ostringstream os;
os << "some_text";
return do_stuff(os.str());
}
che avevo trovato un similar post su gamdev.net che ha discusso avere questo problema in VS2005. Il programma di esempio in questo post mi compila per SP1 2008 così com'è - ma quando lo ho modificato per usare ostringstream, sono riuscito a ottenere il problema.
Da rovistando nel debugger, sembra che la biblioteca si apre iteratori dallo stack, poi tenta di utilizzarli in _Orphan_All, che è una sorta di iteratore controllare il codice di pulitura ...
Can chiunque altro riproduci questo problema o dimmi cosa sta succedendo?
Grazie!
Tale articolo dà la risposta esatta: " ... ci sono due bug conosciuti che rimangono in VC9, uno dei quali non può essere fissato in VC9 senza rompere la compatibilità binaria Si può essere in esecuzione in questi bug, tuttavia, come hanno. sono all'interno della stringa (e sono, a nostra conoscenza, specifico per utilizzare stringstreams) ..." avevo bisogno stringstream per creare il problema. Grazie per il vostro aiuto a tutti! –