LINJMP和SETJMP C++在LINUX/GCC上的使用是否安全?

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

推荐答案

setjmp()/longjmp()完全颠覆了堆栈展开,因此也颠覆了异常处理以及RAII(一般的析构函数).

标准中的18.7/4"其他运行时支持":

如果任何自动对象被抛出的异常 destruct

因此,setjmp()/longjmp()的基本原则是C++不能很好地发挥作用.

Linux相关问答推荐

Linux/gcc中的文件创建时间系统调用

"‘operator<<’匹配失败(可能是因为我的C++/GCC版本问题)"

Linux BlueZ 5.65 hcitool 结合服务 UUID 和制造数据广告

Linux PREEMPT_RT:SCHED_OTHER 的性能优于 SCHED_FIFO.为什么?

删除一行和它之前的一行

如何在 Linux 上使用 -grep 构建过滤间隔的命令

树莓派拒绝连接到瓶子服务器

内核是如何工作的?

在不调试的情况下查找哪个汇编指令导致了非法指令错误

如何仅使用 SED 获得第二行

在 Node.JS 中引用相对于应用程序根目录的文件的正确方法

如何排除 tar 的绝对路径?

使用特定目录作为根目录压缩目录的命令

polkitd未注册身份验证代理的解释

scp 使用私钥身份验证将目录复制到另一台服务器

如何找到只对所有者具有特定权限的文件?

如何更改 tmux 会话的起始目录?

如何在 linux 或 unix 上找到用户的主目录?

UNIX `time` 命令对于基准测试是否足够准确?

在linux中将制表符分隔的文件转换为csv的最快方法