Вопросы по теме 'exception-safety'

Можно ли иметь метательную реализацию swap-члена?
Общая рекомендация при написании классов (с использованием идиомы копирования и подкачки) состоит в том, чтобы предоставить функцию члена подкачки без выбрасывания. ( Effective C++, 3-е издание, пункт 25 и другие ресурсы) Однако что, если я не...
320 просмотров

C++ безопасность исключений unordered_map
Я бродил по спецификациям C++ (cplusplus.com) и обнаружил, что там ничего не сказано о безопасности исключений для std::unordered_map. так что в основном, если я пишу map["foo"]=5; и выдается исключение из-за нехватки памяти или bad_alloc,...
787 просмотров
schedule 07.05.2023

Безопасность исключений и make_unique
Просто чтобы уточнить, использование make_unique повышает безопасность исключений только тогда, когда у вас есть несколько распределений в выражении, а не только одно, верно? Например void f(T*); f(new T); совершенно безопасен для...
6395 просмотров
schedule 06.07.2022

Exceptionsafety make_unique: почему исключение f(new T) безопасно
Я читаю GOTW102 и задаюсь вопросом, почему make_unique более безопасен в плане исключений, чем другие случаи, или в подробно, почему f(new T(...)) более безопасен в плане исключений, чем f(new T1(...), new T2(...)) . Реализация make_unique...
1587 просмотров
schedule 01.03.2023

C++: почему работает этот простой Scope Guard?
До сих пор у каждого взгляда на защиту области действия была логическая переменная защиты. Например, см. это обсуждение: самый простой и аккуратный c++11 ScopeGuard Но простой сторож работает (gcc 4.9, clang 3.6.0): template <class C>...
580 просмотров
schedule 30.11.2022

Какова гарантия безопасности исключений для методов получения (по значению)?
Каковы безопасность исключений для следующего примера класса для методов получения? Предлагают ли такие геттерные методы хотя бы надежную гарантию? Всегда ли возврат фундаментального типа по значению дает гарантию отсутствия бросков? class...
128 просмотров
schedule 10.01.2023

Как предотвратить переполнение буфера/переполнение массива?
Недавно я писал код для пользовательского протокола последовательной связи. Что я сделал, так это то, что я использовал часть (8/16 бит) полученных данных, чтобы указать, насколько велик размер кадра. Основываясь на этих данных, я ожидаю, что что...
950 просмотров

Существует ли стандартный класс С++ для установки переменной в значение при выходе из области видимости
В рамках функции-члена я хочу временно установить для переменной-члена определенное значение. Затем, когда эта функция возвращается, я хочу сбросить эту переменную-член до заданного известного значения. Чтобы защититься от исключений и...
3449 просмотров
schedule 29.10.2022

Почему деструкторы запускаются при возникновении паники?
Если программа на Rust паникует и предполагая, что нет никаких ловушек паники (которых некоторое время не было), конечно, было бы безопасно и нормально не запускать деструкторы, а просто позволить ОС очиститься после процесса. Почему Rust...
196 просмотров

Как создать функцию с надежной гарантией исключения?
У меня есть функция, для которой я хотел бы иметь сильную гарантию исключения: class X { /* Fields and stuff */ void some_function() { vector1.push_back(/*...*/); // May Throw vector2.push_back(/*...*/); // May Throw...
114 просмотров
schedule 16.12.2022