У меня есть простой вопрос, как мы надеемся, - как освобождается одна свободная память, которая была выделена в блоке try при возникновении исключения? Рассмотрим следующий код:
try
{
char *heap = new char [50];
//let exception occur here
delete[] heap;
}
catch (...)
{
cout << "Error, leaving function now";
//delete[] heap; doesn't work of course, heap is unknown to compiler
return 1;
}
Как я могу освободить память после того, как куча была выделена, а исключение возникло до вызова delete[] heap
? Есть ли правило не выделять память в кучу в этих try.. catch блоки?