Я исследовал setjmp / longjmp и обнаружил, что setjmp сохраняет регистры, такие как указатель инструкции, указатель стека и т. д.
Однако я не понимаю, что нельзя изменить данные в стеке самого потока между вызовом setjmp и longjmp . В этом случае longjmp не будет работать должным образом.
Чтобы прояснить, например, когда longjmp восстанавливает указатель стека, скажем, данные в памяти, на которые указывает указатель стека, теперь не те, что были при setjmp назывался. Это может случиться? И если это произойдет, разве мы не в беде?
Также, что подразумевается под заявлением: « Подпрограммы longjmp () не могут быть вызваны после возврата подпрограммы, которая вызвала подпрограммы setjmp (). "