Всякий раз, когда локальная переменная могла измениться между вызовом установки на setjmp
и переходом назад.
7.13.2.1p3
Вседоступные объекты имеют значения, а все остальные компоненты абстрактной машины249) имеют состояние на момент вызова функции longjmp, за исключением того, что значения объектов с длительностью автоматического хранения, локальные для функции, содержащей вызов соответствующего setjmpмакрос, который не имеет volatile-квалифицированного типа и был изменен между вызовом setjmp и вызовом longjmp, является неопределенным.
setjmp
снимки ваших регистров.Если локальная переменная была в регистре, и вы изменили переменную после вызова setjmp
, при возврате она будет иметь моментальный снимок.
В Linux x86_64 я получаю выходные данные 2
(додата, поскольку volatile) и 10
(старое значение), если я скомпилирую с оптимизацией.