Entry tags:
исключения
Чего-то в зиване никакой активности, еще здесь спрошу:
Кто-нибудь разбирался, как именно в C++ исключения работают? Для конкретного случая GCC? А то я тут полез смотреть в дизассемблированный код, и это просто какая-то загадка природы: вот лежит код из try, в нем никаких дополнительных проверок. Вот лежит код из catch, в нем видно ветвление по типу исключения. Но между ними - никакой связи. Они просто лежат рядом. Как оно его находит? Чтоб сначала выполнить деструкторы из try, а потом перейти в catch? Ну, деструкторы вроде присутствуют в двух копиях, так что может там есть специальный вариант для поимки исключений. Но как оно эти нужные куски находит? Вроде нигде в основном коде нет никаких ссылок на них.
И, кстати, где нынче умное место для таких вопросов? Реддит?
Кто-нибудь разбирался, как именно в C++ исключения работают? Для конкретного случая GCC? А то я тут полез смотреть в дизассемблированный код, и это просто какая-то загадка природы: вот лежит код из try, в нем никаких дополнительных проверок. Вот лежит код из catch, в нем видно ветвление по типу исключения. Но между ними - никакой связи. Они просто лежат рядом. Как оно его находит? Чтоб сначала выполнить деструкторы из try, а потом перейти в catch? Ну, деструкторы вроде присутствуют в двух копиях, так что может там есть специальный вариант для поимки исключений. Но как оно эти нужные куски находит? Вроде нигде в основном коде нет никаких ссылок на них.
И, кстати, где нынче умное место для таких вопросов? Реддит?
no subject
(no subject)
no subject
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)