これを2時間デバッグしています。私はQString::toStdString
std :: stringデストラクタでQString :: toStdString()がクラッシュする
QString s = "testtesttesttesttesttest";
const std::string &temp = s.toStdString();
を呼び出す場合プログラムは、後に、私はそれが最初にメモリ破損を思ったのstd ::文字列デストラクタ
__CLR_OR_THIS_CALL ~basic_string()
{ // destroy the string
_Tidy(true); // <---- It crashes on this line.
}
にクラッシュするが、これはmain()
がのみ2行が含まれている場合でも起こります。なぜこのようなことが起こるのか誰にも知られているのですか?
My Qtバージョンは4.8.1
です。
あなたはQtのどのバージョンを使用していますか?参照の代わりに文字列 'string temp = s.toStdString();'のコピーを保存するとどうなりますか? – RedX
'string temp = s.toStdString();'と同じことが起こります。これは 'toStdString()'によって返された一時変数のデストラクタが直ちに呼び出されるため、早く起こります。 Qtのバージョンはどのように表示されますか?どこを見ますか?このプロジェクトは他の人によって設定されていますが、Qt CreatorだけでVisual StudioでQtを使った経験はありません。 – sashoalm
これを試してください: 'std :: string stdUtf8 = qs.toUtf8()。constData();' – Najzero