关于以下内容在linux/gcc上使用C++中的longjmp和setjmp是否安全?
*this
指针我有这样的代码如下
try {
doSomething();
} catch(InterruptException) {
goto rewind_code;
}
if(0) {
rewind_code:
longjmp(savepoint, 1);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我goto
离开catch块时,C++运行时存储的异常对象是免费的吗?或者运行时是否允许缓存它,直到周围的函数存在或类似的东西?我只是想确保如果我多次执行上面的代码,每次采用倒带代码,我都不会泄漏内存(因为longjmp
不会执行编译器在函数序列之前或之前发出的清理代码).