私のコードは以下のとおりです
std::ostringstream tmpstr, tmpstr2;
for( /* something */ )
{
//writting inside tmpstr
}
tmpstr2 << tmpstr.rdbuf();
cout << "assigned to tmpstr2";
out <<tmpstr2.str().c_str() ; // Where out is ostrstream& out
これは、ダンプ内の最後のスタック呼び出しです。
std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char> >::~basic_ostringstream
この最後の行を実行すると、コアダンプが生成されます。その背後にある理由を理解できません。誰かが私がいる操作を実行しているかどうかを教えてもらえますか invalid
しかし、コンパイルエラーではありません。
回答:
回答№1は1別のメモリでメモリが破損していますステートメント。実際のコードを見ずに推測することは困難ですが、最良の推測は、tmpstrまたはスタック配列の直前に割り当てられた何かの範囲外に書き込むことです。
どちらにしても、実際に属するメモリストリームオブジェクトが上書きされ、ストリームオブジェクトが破損します。コアダンプは、検出されなかったため、実際の破線の後に発生します。いくつかの境界を上書きしましたが、外部ではなくプログラムのメモリで終了しました。特に、tmpstrのメモリ内。