Вопросы по теме 'raii'

выбрасывание исключений из деструктора
Большинство людей говорят, что никогда не генерировать исключение из деструктора - это приведет к неопределенному поведению. Страуструп подчеркивает, что "деструктор вектора явно вызывает деструктор для каждого элемента. Это означает, что если...
123987 просмотров
schedule 01.06.2023

С#. Объекты сразу же уничтожаются при выходе из области видимости?
Могу ли я быть уверен, что объект уничтожается и его деструктор вызывается немедленно, когда он выходит за пределы области видимости в C#? Я полагаю, что так и должно быть, поскольку многие распространенные методы кодирования (например, объекты...
15394 просмотров
schedule 04.08.2023

Создание HANDLE RAII-совместимого с использованием shared_ptr с пользовательским средством удаления
Недавно я опубликовал общий вопрос о RAII по адресу SO . Однако у меня все еще есть некоторые проблемы с реализацией моего примера HANDLE. HANDLE преобразуется в void * в windows.h . Следовательно, необходимо правильное определение...
7157 просмотров
schedule 10.03.2023

Любой шаблон RAII в boost или C++0x
Есть ли какой-либо шаблон, доступный в boost для RAII . Есть такие классы, как scoped_ptr , shared_ptr , которые в основном работают с указателем. Можно ли использовать эти классы для любых других ресурсов, кроме указателей. Есть ли шаблон,...
6228 просмотров
schedule 21.06.2023

Какой класс-оболочку в C++ следует использовать для автоматизированного управления ресурсами?
Я любитель С++. Я пишу некоторый код Win32 API, и есть много дескрипторов и странных составных объектов. Поэтому мне было интересно - есть ли какой-нибудь класс-оболочка, который упростил бы управление ресурсами? Например, когда я хочу загрузить...
6660 просмотров
schedule 01.08.2023

Как справиться с ошибкой конструктора для RAII
Я знаком с преимуществами RAII, но недавно столкнулся с такой проблемой в коде: class Foo { public: Foo() { DoSomething(); ... } ~Foo() { UndoSomething(); } } Все в порядке, за исключением того, что код в...
3954 просмотров
schedule 02.09.2023

Нужен совет по дизайну RAII для элементов пула объектов/соединений
Я начну с того, что я изучал это в течение нескольких дней, пытаясь понять, как это сделать «правильно». После большого количества поисков в Google по RAII / дизайну пула / умным указателям и не придя к определенному выводу (за исключением того, что,...
435 просмотров
schedule 19.11.2022

Могут ли сосуществовать оптимизация хвостовых вызовов и RAII?
Я не могу придумать настоящий язык RAII, который также имеет оптимизацию хвостовых вызовов в спецификациях, но я знаю, что многие реализации C++ могут сделать это как оптимизацию для конкретной реализации. Это ставит вопрос для тех реализаций,...
1684 просмотров

Что должен делать конструктор по умолчанию в классе RAII с семантикой перемещения?
Семантика перемещения отлично подходит для классов RAII. Они позволяют программировать так, как если бы у вас была семантика значений, без затрат на тяжелые копии. Отличным примером этого является возврат std::vector из функции . Однако...
1724 просмотров
schedule 16.10.2022

Почему шаблон Dispose в C # не работает больше, чем RAII в C ++
Итак, я как раз читал о шаблоне RAII для языков без сбора мусора и об этом section : Это ограничение обычно встречается при разработке пользовательских классов. Настраиваемые классы в C # и Java должны явно реализовать метод dispose, чтобы...
1416 просмотров
schedule 08.10.2022

Имеют ли сокеты boost asio правильную очистку RAII
Я пытался просмотреть исходный код, но не могу ориентироваться в коде шаблона. В основном: вот что говорится в документации (для close() ): Remarks For portable behaviour with respect to graceful closure of a connected socket, call...
2186 просмотров
schedule 17.03.2024

Чтение файла с помощью C++ и RAII
Как лучше всего прочитать файл с помощью C++ и RAII? Все примеры, которые я видел, используют что-то похожее на код ниже: #include <iostream> #include <fstream> int main () { std::ifstream is ("test.txt", std::ifstream::binary);...
2019 просмотров
schedule 08.05.2023

Освобождение ресурсов через объект _local_ RAII
Я мог бы быть совершенно не в своем понимании использования класса RAII для обеспечения высвобождения ресурсов, но следующий пример показывает, что локальный объект класса RAII не должен иметь возможность освобождать свой ресурс. при сбое...
53 просмотров
schedule 14.06.2022

Однострочный для RAII без указателя?
Связанная тема std::unique_ptr, средства удаления и Win32 API Чтобы использовать дескриптор Win32 в качестве RAII, я могу использовать следующую строку std::unique_ptr<std::remove_pointer<HANDLE>::type,...
4277 просмотров
schedule 13.11.2023

Инициализировать функтор, переданный в пользовательскую программу удаления unique_ptr.
Я использую RAII для управления ресурсами в своем коде, используя std::unique_ptr с пользовательскими удалениями. До сих пор это было относительно тривиально, но теперь я хочу добавить RAII-оболочку для ресурса, которому требуется доступ к...
834 просмотров
schedule 30.03.2023

Объекты RAII tr1:shared_ptr
Я читаю С++ Скотта Мейрсеса и натыкаюсь на следующий код: class Lock { public: explicit Lock(Mutex *pm) // init shared_ptr with the Mutex : mutexPtr(pm, unlock) // to point to and the unlock func { lock(mutexPtr.get()); // see Item15 for...
87 просмотров
schedule 12.06.2022

Как ограничить область действия переменной, необходимой для создания объекта, который живет дольше?
У меня есть объект в стеке, для которого требуется другой объект для его конструктора, например: { ObjectDef def(importantData); // should die as soon as obj is created def.setOptionalData(100); Object obj(def); // should live for...
388 просмотров
schedule 19.12.2022

Правильное завершение программы. Использование исключений
Вопрос : Является ли использование исключений правильным способом завершения моей программы, если все, что я хочу, - это отобразить сообщение об ошибке и закрыть (учитывая, что я могу глубоко погрузиться в программу)? Или я могу вместо этого явно...
10605 просмотров
schedule 01.05.2023

Конец жизни статического объекта в области блока по сравнению с глобальной областью
В этом отрывке при выходе программы с cppreference.com Если завершение конструктора или динамической инициализации для локального или статического объекта потока A было упорядочено до локального или статического объекта потока B, завершение...
44 просмотров
schedule 17.05.2024

Самый быстрый `наконец` для С++
С++ пока (к сожалению) не поддерживает предложение finally для оператора try . Это приводит к предположениям о том, как высвободить ресурсы. После изучения вопроса в Интернете, хотя я нашел некоторые решения, я не понял их производительности (и я...
942 просмотров