Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: кто говорил что setjmp/longjmp не всегда работают?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
_Pasha
Привет. Сабж.
В каких случаях может не работать?
Я же полностью контекст вроде бы сохраняю?
Rst7
Я говорил (может быть). Компилятор MSVS в режиме С++ (по крайней мере так было в MSVS 2008) при выполнении longjmp освобождает все объекты со стека. Там специальный список, как оказалось, создается для всех экземпляров класса на стеке.

Соответственно, рукопашная многозадачность через setjmp/longjmp не работает, ломает объекты на стеке.

Лечится выносом setjmp/longjmp в отдельный именно С-файл, чтобы шибко вумный компилятор не знал о существовании этого списка, если я правильно помню.

При классическом использовании (возврат из глубоких вложений) все работает вполне адекватно.
_Pasha
Спасибо.
Точно, Вы и говорили года 3 назад.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.