相关疑难解决方法(0)

C++:安全使用longjmp和setjmp?

关于以下内容在linux/gcc上使用C++中的longjmp和setjmp是否安全?

  1. 异常处理(我没有使用longjmp/setjmp实现异常处理.我想知道longjmp/setjmp对标准异常处理会产生什么副作用)
  2. *this 指针
  3. 信号
  4. 智能指针(boost的共享和侵入指针)
  5. 你能想到的任何其他东西.

c++ linux gcc exception longjmp

39
推荐指数
2
解决办法
1万
查看次数

如果我用"goto"跳出一个catch块,我保证异常对象是免费的吗?

我有这样的代码如下

try {
  doSomething();
} catch(InterruptException) {
  goto rewind_code;
}

if(0) {
rewind_code:
  longjmp(savepoint, 1);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我goto离开catch块时,C++运行时存储的异常对象是免费的吗?或者运行时是否允许缓存它,直到周围的函数存在或类似的东西?我只是想确保如果我多次执行上面的代码,每次采用倒带代码,我都不会泄漏内存(因为longjmp不会执行编译器在函数序列之前或之前发出的清理代码).

c++ exception abi language-lawyer longjmp

13
推荐指数
1
解决办法
679
查看次数

标签 统计

c++ ×2

exception ×2

longjmp ×2

abi ×1

gcc ×1

language-lawyer ×1

linux ×1