реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> кто говорил что setjmp/longjmp не всегда работают?
_Pasha
сообщение Sep 21 2015, 20:46
Сообщение #1


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Привет. Сабж.
В каких случаях может не работать?
Я же полностью контекст вроде бы сохраняю?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 21 2015, 21:02
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Я говорил (может быть). Компилятор MSVS в режиме С++ (по крайней мере так было в MSVS 2008) при выполнении longjmp освобождает все объекты со стека. Там специальный список, как оказалось, создается для всех экземпляров класса на стеке.

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

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

При классическом использовании (возврат из глубоких вложений) все работает вполне адекватно.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 21 2015, 21:05
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Спасибо.
Точно, Вы и говорили года 3 назад.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th May 2024 - 16:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016