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