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

Как работает RAII, когда конструктор выдает исключение?
Я изучаю идиому RAII в C ++ и как использовать интеллектуальные указатели. Читая, я натолкнулся на две вещи, которые, как мне кажется, противоречат друг другу. Цитата из http://www.hackcraft.net/raii/ : ... если объект-член с семантикой...
2965 просмотров
schedule 05.10.2021

Языковая поддержка Scope Guard
Scope Guard - это очень подходящая идиома для C ++ . Он хорошо взаимодействует с исключениями и соответствует RAII. C ++ не поддерживает встроенные средства защиты области видимости. Я имею в виду чистый синтаксис. На данный момент я могу...
55 просмотров
schedule 12.10.2021

unique_ptr / auto_ptr выглядит одинаково с пользовательским удалением для c ++ 98
auto_ptr не поддерживает настраиваемое средство удаления, и tr1 shared_ptr мне не подходит. Существуют ли какие-либо хорошие варианты до c11 для unique_ptr / auto_ptr , похожие на настраиваемый средство удаления?
246 просмотров
schedule 30.11.2021

RAII с исключениями
Я немного читал о RAII за последние несколько дней, и мне всегда казалось, что я это понимаю. Итак, я просто хотел написать небольшую программу, у которой есть объект, который обрабатывает файл, и хотел попробовать RAII с выдачей исключения. Вот что...
32 просмотров
schedule 27.10.2021

Как я могу протестировать RAII?
В настоящее время я пытаюсь протестировать код RAII в Rust, и я хотел бы отложить сброс значения до определенной строки кода. В C # GC.KeepAlive предотвращает сборку мусора для объекта до момента вызова GC.KeepAlive. С точки зрения приложения этот...
108 просмотров
schedule 17.11.2021

Javascript автоматически освобождает ресурсы (например, RAII)
Мой общий вопрос: какие методы я могу использовать для обеспечения очистки / освобождения ресурсов в Javascript? В настоящее время я использую подход C (без goto) для поиска каждого пути выполнения к возврату или исключению в моих функциях и...
2367 просмотров
schedule 18.02.2022

Поддерживает ли RAII передачу прав собственности на ресурсы?
Я в основном думал о RAII как об использовании времени жизни объекта, чтобы избежать утечки ресурсов, и на практике это хорошо послужило мне. Но недавно у меня было несколько дискуссий о том, что именно составляет шаблон RAII, а что нет, что...
156 просмотров
schedule 18.02.2022

Обнаружение активных исключений в деструкторе
У меня есть класс, который использует RAII для очистки на случай, если что-то пойдет не так. Это означает, что класс содержит флаг, который сообщает ему, была ли работа завершена, и если этот флаг не установлен при вызове конструктора, он выполняет...
2431 просмотров
schedule 06.03.2022

Освободить объект стека до того, как выполнение выйдет за рамки объекта стека?
Подразумевает ли RAII в С++, что объект стека (объект, размещенный в стеке, например, локальная переменная в функции) освобождается только тогда, когда выполнение выходит за рамки объекта стека? Что, если я хочу немного освободить объект стека до...
85 просмотров
schedule 15.04.2022

Как совместить TDD и RAII
Я пытаюсь провести обширные тесты для своего нового проекта, но у меня есть проблема. В основном я хочу протестировать MyClass. MyClass использует несколько других классов, которые мне не нужны/не хотят выполнять свою работу для целей теста....
459 просмотров
schedule 04.05.2022

Лучшие практики + синтаксис для реализации контекстного менеджера на C ++
В нашей кодовой базе Python есть связанный с метриками код, который выглядит следующим образом: class Timer: def __enter__(self, name): self.name = name self.start = time.time() def __exit__(self): elapsed =...
4032 просмотров
schedule 07.05.2022

Возможные утечки памяти с интеллектуальными указателями
Некоторое время я был в сообществе C ++ и слышал, что необработанные указатели «злы» и что их следует избегать как можно чаще. Хотя одна из основных причин использовать интеллектуальные указатели вместо необработанных указателей - «предотвратить»...
6436 просмотров
schedule 15.05.2022

Как добавить объект с дорогим dtor в вектор без emplace_back()
У меня есть объект RenderBuffer , который создает буфер OpenGL как часть конструктора и уничтожает его как часть деструктора. Это очень дорогая операция. У этого объекта нет конструктора по умолчанию, поэтому он либо помещается в список...
70 просмотров
schedule 01.07.2022

RAII способ получить ошибки, обнаруженные во время уничтожения
В типичном примере RAII для файлового ввода-вывода в Википедии любые ошибки, возникающие при закрытии файла, проглатываются: #include <iostream> #include <string> #include <fstream> #include <stdexcept> void write_to_file...
213 просмотров

вызов функции при выходе из области видимости
Какое самое элегантное решение для автоматического вызова функции при выходе из области видимости? Мой текущий подход (см. ниже) работает , но я думаю, что для этого должно быть что-то более общее, например, написать собственный класс. #include...
1956 просмотров
schedule 13.07.2022

Что такое OCaml-аналог Python with-statement (автоматическое освобождение ресурсов)
Что такое OCaml-аналог оператора Python «with»? with open('test.txt', 'r') as f: # Do stuff with f # At this point, f will always be closed, even in case of exceptions То есть: каков предпочтительный способ в OCaml для безопасной...
316 просмотров
schedule 16.08.2022

Массивы C++ и make_unique
В продолжение этого поста мне интересно, как его реализация make_unique играет с функцией распределения -temporary буферные массивы, такие как в следующем коде. f() { auto buf = new int[n]; // temporary buffer // use buf ... delete []...
9566 просмотров
schedule 19.08.2022

C # dispose не вызывается, когда объект покидает область видимости в C ++ / CLI
У меня есть объект C #, который можно использовать для ресурса, который выглядит так: public sealed class CLoadingScope { private bool isDisposed; public CLoadingScope() {} ~CLoadingScope() { // must be disposed...
1042 просмотров
schedule 31.08.2022

Используйте RAII с фабрикой, принимая в качестве входных данных ссылку на указатель
У меня есть функция, которая создает объект и принимает в качестве входных данных ссылку на указатель: void generator(Object*&) и я называю это так: Object* obj = nullptr; generator(obj); ... use obj ... delete obj; Как видите,...
223 просмотров
schedule 31.08.2022

Есть ли уже реализованный дескриптор файла RAII?
Дескриптор файла RAII выглядит довольно просто, так что, я думаю, он уже реализован? Но я не нашел никакой реализации. Я нашел file_descriptor в boost::iostreams, но не знаю, то ли это, что я ищу.
5620 просмотров
schedule 09.09.2022