Debugowałem to przez 2 godziny, a to sprowadza się do tego. Jeśli zadzwonię QString::toStdString
QString :: toStdString() wywala na std :: string destructor
QString s = "testtesttesttesttesttest";
const std::string &temp = s.toStdString();
program później wywala na std :: string destructor
__CLR_OR_THIS_CALL ~basic_string()
{ // destroy the string
_Tidy(true); // <---- It crashes on this line.
}
myślałem, że to uszkodzenie pamięci na początku, ale to się dzieje, nawet jeśli main()
zawiera tylko 2 linie. Czy ktoś wie, dlaczego tak się dzieje, a także jak mogę to naprawić?
Moja wersja Qt to 4.8.1
.
Jaka wersja Qt używasz? Co się stanie, jeśli zamiast referencji zostanie zapisana kopia ciągu 'string temp = s.toStdString();'? – RedX
To samo dzieje się z 'string temp = s.toStdString();', to dzieje się wcześniej, ponieważ destruktor zmiennej tymczasowej zwróconej przez 'toStdString()' jest wywoływany natychmiast. Jak mogę zobaczyć wersję Qt, której używam? Gdzie mam wyglądać? Projekt został skonfigurowany przez inne osoby, nie mam doświadczenia z używaniem Qt z Visual Studio, tylko z Qt Creator. – sashoalm
spróbuj tego: 'std :: string stdUtf8 = qs.toUtf8(). ConstData();' – Najzero