У меня есть вопрос относительно следующего фрагмента кода, с которым я столкнулся в одной из наших старых библиотек.
try
{
throw "this is an error message";
}
catch( char* error )
{
cout << "an exception occured: " << error << endl;
}
Мое понимание поведения в этом случае заключается в том, что сообщение об ошибке генерируется по значению, что означает копию текста
"это сообщение об ошибке"
брошен. Предложение catch указывает указатель на char как ожидаемый тип исключения. Может ли кто-нибудь просветить меня, почему это работает? Другой вопрос в этом контексте касается памяти, выделенной для сообщения об ошибке. Поскольку типом исключения является указатель на char *, можно предположить, что память для сообщения об ошибке была выделена динамически в куче и должна быть удалена пользователем?
Заранее спасибо