У меня есть такой код следующим образом
try {
doSomething();
} catch(InterruptException) {
goto rewind_code;
}
if(0) {
rewind_code:
longjmp(savepoint, 1);
}
Мой вопрос такой: свободен ли объект исключения, который сохраняется во время выполнения C ++, когда я goto
выходит из блока catch?Или среде выполнения разрешено кэшировать ее до тех пор, пока не появится окружающая функция или что-то в этом роде?Я просто хочу убедиться, что если я выполню приведенный выше код несколько раз, каждый раз, принимая код перемотки, я не утечу память (потому что longjmp
не будет выполнять код очистки, испускаемый компилятором в прологах функций или перед ними).