Size: a a a

cxx.Дискуссионная

2020 April 18

O

Ofee in cxx.Дискуссионная
Till Schneider
Знаешь, что будет при кидании исключения???
Да, понижается зарплата программиста за каждый throw в коде
источник

Е

Егор in cxx.Дискуссионная
Ofee
Да, понижается зарплата программиста за каждый throw в коде
я в минус не буду работать
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
То есть если нигде у членов класса и ниже нет noexcept(false) на деструкторе, то и деструктор самого объекта помечается как noexcept, пока явно не отменишь это спецификатором
источник

TS

Till Schneider in cxx.Дискуссионная
Ofee
Да, понижается зарплата программиста за каждый throw в коде
источник

TS

Till Schneider in cxx.Дискуссионная
@oficsu как думаешь, утекла память?
источник

O

Ofee in cxx.Дискуссионная
Ничего не знаю, речь про -fno-exceptions шла
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
Встречный вопрос. Ассемблер знаешь? Как устроен стек, вызов функций, ABI call Convention хотя бы для System V? Как линкер работает?
источник

RM

Roy Mustang in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Встречный вопрос. Ассемблер знаешь? Как устроен стек, вызов функций, ABI call Convention хотя бы для System V? Как линкер работает?
Не смотре что там в System V
источник

RM

Roy Mustang in cxx.Дискуссионная
Стек устроен так, сверху положил, сверху забрал, вызываемые функции так же кладутся на стек
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
Не смотре что там в System V
Можно просто загуглить System V ABI call convention
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Не смотре что там в System V
Это важно, ведь в понятиях C++ никакого стека нет
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
Стек устроен так, сверху положил, сверху забрал, вызываемые функции так же кладутся на стек
Какие регистры как используются, как вызов функций и возврат организован?
источник

O

Ofee in cxx.Дискуссионная
Ofee
Это важно, ведь в понятиях C++ никакого стека нет
источник

O

Ofee in cxx.Дискуссионная
А это не implementation-defined?
источник

RM

Roy Mustang in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Какие регистры как используются, как вызов функций и возврат организован?
Аргументы передаются либо через push методом вставки в стек (причем аргументы вставляются в обратном порядке), затем происходит вызов call метода (аргументы не всегда передаются методом push), куда возвращаться определяет регистр ESP
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
Крч, если бекграунд позволяет, то можешь почитать это https://monoinfinito.wordpress.com/series/exception-handling-in-c/
источник

RM

Roy Mustang in cxx.Дискуссионная
Спасибо, щас почитаю
источник

Е

Егор in cxx.Дискуссионная
ясно гуманитарный стандарт
источник

O

Ofee in cxx.Дискуссионная
Ох уж эта терминология...
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
Краткий ответ: при stack unwinding никто деструкторы во фрейме noexcept функции не вызовет, ибо этой секции там просто нет
источник