This answer은 private static ostringstream
을 선언합니다. 이 스레드는 안전한가요? 두 스레드가 동시에 예외를 throw (catch 및 log what()
)하면이 작업이 안정적으로 작동합니까? 내가 좋아하는, 로컬 ostringstream
를 선언하는 경우 :C++ 예외의 문자열 작성
virtual const char* what() const throw()
{
std::ostringstream cnvt.str("");
cnvt << runtime_error::what() << ": " << getNumerator()
<< "/" << getDenominator();
return cnvt.str().c_str();
}
는 단점 (메모리 누수, 또는 불법 포인터)가 있습니까? 아니면 스레드로부터 안전한 방법입니까?
코드에서 범위를 벗어나는 문자열에 대한 포인터를 반환하면 정의되지 않은 동작이 발생합니다. –