longjmp с вызовом деструкторов
От: _lee  
Дата: 22.05.04 13:01
Оценка:
Известно что м MSVC есть вариант функции "longjmp" (если включен <SETJMP.H>), вызывающий деструкторы объектов в стеке, аналогично "throw".
Как бы реализовать такую функцию в GCC? Очевидно что вся нужная информация для вызова деструкторов должна быть доступна где-то в стеке, ею пользуется throw.

Конечно проблему можно решить и с помощью стандартный throw/catch, но при глубокой рекурсии будет ведь вызываться каждый catch по пути раскрутки стека, плюс к тому проверяться типы обработчиков catch. То есть если заранее известно куда возвратить управление, то setjmp/longjmp работает значительно быстрее.
Posted via RSDN NNTP Server 1.9 alpha
Re: longjmp с вызовом деструкторов
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.05.04 16:00
Оценка:
Здравствуйте, _lee, Вы писали:

про то как работают исключения в VC можно кое-точ прочитать здесь (там маловато, но для твоих нужд достаточно, да и код есть)
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: longjmp с вызовом деструкторов
От: _lee  
Дата: 22.05.04 17:59
Оценка:
В том то и дело что механизм исключений VC (основанный на Windows SEH) существенно отличен от GCC.
Интересует как раз последний.

> про то как работают исключения в VC можно кое-точ прочитать здесь (там маловато, но для твоих нужд достаточно, да и код есть)
Posted via RSDN NNTP Server 1.9 alpha
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.