我正在调查setjmp/longjmp并发现setjmp保存了诸如指令指针、堆栈指针等寄存器...
但是我在这里没有得到的是,线程本身的堆栈中的数据不能在调用setjmp和longjmp之间进行修改。在那种情况下,longjmp不会按预期工作。
为了清楚起见,例如,当longjmp恢复堆栈指针时,假设堆栈指针现在指向的内存中的数据与调用setjmp时的数据不同。这会发生吗?如果发生这种情况,我们不是有麻烦吗?
还有这句话的意思是,“在调用 setjmp() 例程的例程返回之后,可能不会调用 longjmp() 例程。 ”