Я думал, что это прозвучит простой простой вопрос, но я встал на это при чтении спецификации исключения на языке С ++. что в одной из книг C++ 11 теперь имеет ключевое слово «noexcept», что означает, что исключение не будет выбрано из функции, если оно объявлено с заголовком функции, и что причиной появления этого ключевого слова является C++ exception specifications are checked at run time rather than at compile time, so they offer no programmer guarantees that all exceptions have been handled.
и, следовательно, они заключают два случая функция, будет бросать исключение или если мы ясно, если он никогда не бросит, а затем использовать noexcept
для оптимизации (будем надеяться), какое системное программное обеспечение отвечает за проверку времени выполнения.
void foo() noexcept();
Вот главный вопрос. Какое системное программное обеспечение выполняет проверку времени выполнения (надеюсь, что не компилятор/компоновщик/загрузчик), а также какое системное программное обеспечение отвечает за выделение памяти во время выполнения (распределение динамической памяти), когда все это не заботится компилятором и другими?
http://stackoverflow.com/questions/2766233/what-is-the-c-runtime-library – RyanP
Ryan, является ли ссылка компилятора теми библиотеками времени выполнения после того, как был выполнен перевод? Какой тип связывания произойдет статическим/динам amic (я думаю, только динамический)? –
Если вы используете Visual C++, например, у вас есть возможность указать компилятору (как свойство проекта), следует ли ссылаться на DLL-версию CRT или статически компилировать ее с помощью вашего кода. В первом варианте ваш exe меньше, потому что он загружает DLL во время выполнения (который ваш клиент должен иметь на своем компьютере, Visual Studio Redistributable), а во втором варианте ваш exe больше, потому что он содержит соответствующие функции CRT, но DLL не загружается во время выполнения. – RyanP