SetJmp/LongJmp: Why is this throwing a segfault?

前端 未结 2 1375
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-03 02:17

The following code summarizes the problem I have at the moment. My current execution flow is as follows and a I\'m running in GCC 4.3.

jmp_buf a_buf;
jmp_buf         


        
2条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-03 02:36

    You can only longjmp() back up the call stack. The call to longjmp(b_buf, 1) is where things start to go wrong, because the stack frame referenced by b_buf no longer exists after the longjmp(a_buf).

    From the documentation for longjmp:

    The longjmp() routines may not be called after the routine which called the setjmp() routines returns.

    This includes "returning" through a longjmp() out of the function.

提交回复
热议问题