为什么 setjmp 传统上保存寄存器?
仅以 i386 为例,但类似的问题也适用于其他架构。 setjmp保存的传统i386 jmp_buf由6个保存的寄存器组成:ebx、esi、edi、ebp、esp 和 eip。其中,前 4…
使用 Sys::SigAction::timeout_call 不安全吗?
我刚刚读过 Leon Timmermans 的文章 关于基于信号的超时您应该了解什么,我想知道它/如果它适用于使用Sys::SigAction::timeout_call()。 1)首先,似…
为什么 setjmp/longjmp 在 MSVC 上会崩溃,而在 MinGW 中却不会?
我想使用 setjmp()/longjmp() 来实现协程系统。 然后我决定编写一个小 .c 文件来测试它。在MinGW中,还可以;我得到了我想要的结果。 但是当我在MSVC+…
OCaml 内部结构:异常
我很想知道 OCaml 运行时如何处理异常以使它们如此轻量。他们是使用 setjmp/longjmp 还是在每个函数中返回一个特殊值并传播它? 在我看来, longjmp …
GDB 在 Eclipse 中的 longjmp 上崩溃
我在eclipse中使用c来编写程序。我需要使用GDB来一步步调试。但是,在 longjmp 命令上(当我尝试保存堆栈上下文时)GDB 在 eclipse 内崩溃(因为那里…
setjmp/longjmp 使用 volatile 的性能开销
要使 setjmp/longjmp 正常工作,您需要将局部变量声明为 volatile。如果有人使用 -O3 编译代码,那么 volatile 变量对性能的影响有多大。在 x86 多核…
将 fork 与 setjmp/longjmp 一起使用
我试图使用 fork 结合 setjmp/longjmp 来实现基于多线程 fork 的检查点方案。我希望我的解决方案能够奏效,但正如预期的那样,它没有奏效。下面显示了…
关于 setjmp/longjmp
我正在研究 setjmp/longjmp 并发现 setjmp 保存寄存器,例如指令指针,堆栈指针等... 但是我在这里不明白的是,可以在调用setjmp和longjmp之间,线程…
为什么在包含 时 setjmp 不在 std 命名空间中?
标题说明了一切。包含 后,longjmp 和 jmp_buf 位于 std 命名空间中,但 setjmp不是。我在MinGW4.5和MSVC10上验证了这一点。在查看 标头后,我无法弄…
这段代码是否包含隐藏的错误?
以下代码: 使用 gcc 版本 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5/32bits) 编译时运行良好 使用 MSVC10 (Win7/32bits) 编译时运行良好 使用 gcc 版本 …
如何在 C++ 中(计算)goto 和 longjmp?
我通常不编写 C++ 代码,但我的一位奇怪的计算机科学朋友厌倦了查看我精彩的 FORTRAN 程序,并挑战我用 C++ 重写其中一个程序,因为他更喜欢我的 C++ …
Longjmp 超出信号处理程序?
从问题: 这是好的编程吗练习在 C 中使用 setjmp 和 longjmp 吗? 留下的两条评论说: “你不能在信号处理程序中抛出异常,但你可以做一个 longjmp 安…
链接到 C++ 时在 C 中使用 setjmp 和 longjmp;图书馆
我想在链接到用 C++ 实现的库(但具有 C API)的 C 程序中使用 setjmp 和 longjmp。 C++ 代码确实进行动态内存分配,并且指针通过 API 传递,但只要代…
为什么 setjmp 不保存堆栈?
为什么 setjmp 不保存堆栈? 考虑以下代码: #include jmp_buf Buf; jmp_buf Buf2; void MyFunction() { for(int i = 0; i < 5; i++) { std::cout << …
如果我用“goto”跳出 catch 块,我是否能保证异常对象将被释放?
我有如下代码 try { doSomething(); } catch(InterruptException) { goto rewind_code; } if(0) { rewind_code: longjmp(savepoint, 1); } 我的问题是…