Tag: setjmp

为什么在setjmp()中调用函数会发生分段错误?

我不明白为什么在函数middleFunc() ,当在if ( setjmp(middle) )语句if ( setjmp(middle) )调用entry_point(arg)时,会出现分段错误。 #include #include jmp_buf start,middle,end; void finalFunc(void *v) { printf(“hello\n”); return ; } void middleFunc(void (*entry_point)(void *), void *arg) { //just debug : this does not cause segmentation fault entry_point(arg); if ( setjmp(middle) ){ //this casues the segmentation fault entry_point(arg); //once the entry point (finalFunc) is executed go […]

在setjmp.h中定义的C中的非本地跳转如何工作?

C参考手册 ,附录B描述了两个函数setjmp和longjmp用于称为非本地跳转 。 除了基本理解setjmp保存状态信息和longjmp恢复state ,我还无法理解此function的确切流程和用例。 那么,这个function到底完成了什么,它在哪里有用?

链接到C ++库时在C中使用setjmp和longjmp

我想在C程序中使用setjmp和longjmp,该程序链接到用C ++实现的库(但有一个C API)。 C ++代码确实进行了动态内存分配,指针通过API传递,但只要代码的C端正确管理那些(不透明)对象,使用longjmp时就不会有任何混乱,对吧? 我知道在C ++代码中使用这些函数是不安全的,但它是否应该在链接到C ++代码的C代码中安全?

优秀的setjmp / longjmp教程

嗨,我想在C中阅读关于setjmp / longjmp的好教程。如果有一些真实而非人为的例子会更好。 谢谢。

使用longjmp / setjmp进行Cerror handling有哪些“好”的方法?

我必须将C用于一个项目,我正在考虑使用longjmp/setjmp进行error handling,因为我认为在一个中心位置处理错误要比返回代码容易得多。 如果有一些关于如何做到这一点的线索,我将不胜感激。 如果发生任何此类错误,我特别关注正确完成资源清理。 另外,我如何处理导致multithreading程序使用它们的错误? 更好的是,是否有一些C库已经存在以进行错误/exception处理?