This answerはprivate static ostringstream
と宣言しています。このスレッドは安全ですか? 2つのスレッドが同時に例外をスロー(キャッチしてログにwhat()
)した場合、これは確実に機能しますか?私はのように、ローカルostringstream
を宣言する場合:C++例外の文字列の作成
virtual const char* what() const throw()
{
std::ostringstream cnvt.str("");
cnvt << runtime_error::what() << ": " << getNumerator()
<< "/" << getDenominator();
return cnvt.str().c_str();
}
欠点(メモリリーク、または不正なポインタ)はありますか?またはこれはスレッドセーフな方法ですか?
コードでは、範囲外になる文字列へのポインタを返します。これは未定義の動作につながります。 –