О setjmp / longjmp

Я исследовал setjmp / longjmp и обнаружил, что setjmp сохраняет регистры, такие как указатель инструкции, указатель стека и т. д.

Однако я не понимаю, что нельзя изменить данные в стеке самого потока между вызовом setjmp и longjmp . В этом случае longjmp не будет работать должным образом.

Чтобы прояснить, например, когда longjmp восстанавливает указатель стека, скажем, данные в памяти, на которые указывает указатель стека, теперь не те, что были при setjmp назывался. Это может случиться? И если это произойдет, разве мы не в беде?

Также, что подразумевается под заявлением: « Подпрограммы longjmp () не могут быть вызваны после возврата подпрограммы, которая вызвала подпрограммы setjmp (). "

11
задан MetallicPriest 1 November 2011 в 16:17
поделиться