Программа не должна быть резко отключена. В частности, неявный или явный вызов станд.:: аварийное прекращение работы (), станд.:: quick_exit (), станд.:: _Exit (), станд.:: оконечный () не буду сделан
Программа не должна быть резко отключена. В частности, неявный или явный вызов станд.:: аварийное прекращение работы (), станд.:: quick_exit (), станд.:: _Exit (), станд.:: оконечный () не буду сделан.
Функционирует, такие как std::abort()
, std::quick_exit()
, и std::_Exit()
отключите программу сразу, не вызывая выходных обработчиков или вызвав любые деструкторы для созданных объектов. std::terminate()
функционируйте неявно вызывает std::abort()
отключать программу резко. Исключения, которые не обработаны или не могут быть обработаны, могут также вызвать резкое завершение программы.
В зависимости от вашей среды компилятор не может высвободить выделенные средства и раскрутить стек, когда программа отключена резко, ведя к проблемам, таким как утечки памяти. Такие аварийные завершения программы могут сделать код уязвимым для атак "отказ в обслуживании". Постарайтесь не отключать программу резко.
Polyspace® отмечает операции, которые могут привести к резкому завершению программы. Например:
Деструктор класса выходит с необработанным исключением. Смотрите AUTOSAR C++14 Rule A15-5-3
.
Конструктор глобальной переменной или статического объекта вызывается непосредственно, но это явным образом не задано как noexcept
. Смотрите AUTOSAR C++14 Rule A15-2-1
.
noexcept
функционируйте повышает необработанное исключение. Смотрите AUTOSAR C++14 Rule A15-4-2
.
Аргумент throw
оператор повышает исключение. Смотрите AUTOSAR C++14 Rule M15-1-1
.
Небезопасное завершение функционирует, такие как std::_Exit
, std::abort
, и std::quick_exit
явным образом вызываются.
Функциональный std::terminate
явным образом вызывается.
Обработчик для аварийного завершения явным образом указан при помощи функций std::set_terminate
или std::get_terminate
.
Обработчик для нормального завершения, которое указано к std::atexit
повышает необработанное исключение.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: Обработка исключений |
Категория: Необходимый, Частично автоматизированный |