Вопросы по теме '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 просмотров
schedule
06.07.2022
вызов функции при выходе из области видимости
Какое самое элегантное решение для автоматического вызова функции при выходе из области видимости? Мой текущий подход (см. ниже) работает , но я думаю, что для этого должно быть что-то более общее, например, написать собственный класс.
#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