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

Общие рекомендации по предотвращению утечек памяти в C ++
Какие общие советы помогут избежать утечки памяти в программах на C ++? Как мне выяснить, кто должен освобождать память, которая была выделена динамически?
120610 просмотров
schedule 18.05.2022

Поддерживает ли C ++ блоки «finally»? (И что это за RAII, о котором я все время слышу?)
Поддерживает ли C ++ « наконец 'блоки? Что такое идиома RAII ? В чем разница между идиомой RAII C ++ и оператором C # 'using' ?
247181 просмотров
schedule 13.02.2023

Используют ли, знают или понимают RAII программисты других языков, помимо C ++?
Я заметил, что RAII привлекает много внимания к Stackoverflow, но в моих кругах (в основном C ++) RAII настолько очевиден, что это все равно что спрашивать, что это за класс или деструктор. Так что мне действительно любопытно, потому ли это потому,...
7115 просмотров
schedule 17.03.2022

побочные эффекты сборки мусора?
Это может быть в высшей степени закрытый вопрос, но я из тех, кто видит, что прилипает к стене. Несмотря на все преимущества управления памятью и временем жизни, предоставляемые средой выполнения со сборкой мусора, были ли какие-либо заметные случаи...
1425 просмотров
schedule 20.02.2022

C ++ RAII не работает?
Я только начинаю работать с RAII на C ++ и настраиваю небольшой тестовый пример. Либо мой код сильно запутан, либо RAII не работает! (Я думаю, что это первое). Если я бегу: #include <exception> #include <iostream> class A {...
1372 просмотров
schedule 14.07.2023

Является ли злоупотреблением использование IDisposable и использование в качестве средства для получения ограниченного поведения для безопасности исключений?
Что-то, что я часто использовал в C ++, позволяло классу A обрабатывать состояние входа и выхода для другого класса B через конструктор и деструктор A , чтобы убедиться, что если что-то в этой области выдает исключение, тогда B будет иметь...
6740 просмотров
schedule 14.05.2022

Это хороший способ управлять инициализацией COM?
Я очень новичок во всем, что связано с объектной моделью компонентов, и мне интересно, имеет ли смысл этот метод управления вызовами CoInitalize/CoUninitalize: COM.hpp: #pragma once namespace WindowsAPI { namespace ComponentObjectModel {...
93 просмотров
schedule 19.11.2022

зачем нужна перегрузка при использовании оператора ‹< через шаблон?
Как и в этом вопросе , я экспериментирую с потоковой передачей через класс, использующий SBRM / RAII, поэтому SBRM(x) << "test"; мог бы сделать некоторые дополнительные действия в деструкторе, но мои знания о шаблонах, похоже,...
190 просмотров
schedule 27.08.2022

Как управлять временем выполнения COM-объектов в стиле RAII в программах на C #?
Моя программа на C # использует компонент COM, который имеет множество различных интерфейсов и подобъектов. Проблема в том, что каждый раз, когда я извлекаю какой-либо COM-интерфейс, создается RCW, и этот RCW существует в течение неизвестного времени...
218 просмотров
schedule 03.06.2022

C++ RAII для управления изменением и возвратом состояния объекта
У меня есть класс foo. Операции над foo требуют вызова foo::open(), ряда foo::write() и должны заканчиваться вызовом foo::close(): #include <iostream> class foo { public: foo() { std::cout << "foo::foo()" <<...
183 просмотров
schedule 17.12.2022

Как можно применять RAII для членов класса, которым требуется расширенная инициализация?
Насколько я понимаю идиому RAII при применении к ресурсам, необходимым классу (и, пожалуйста, поправьте меня, если я ошибаюсь), класс, которому требуется ресурс, должен определять член соответствующего типа, и его деструктор будет вызываться...
1047 просмотров
schedule 03.03.2022

Что такое идиома python RAII для переменного количества ресурсов?
Каков «лучший» способ открыть переменное количество файлов в python? Я не могу понять, как использовать «с», если количество файлов заранее неизвестно. (Входящие от RAII/C++)
418 просмотров
schedule 25.03.2023

Зачем деструкторы нужны в C++?
Почему мы должны использовать деструкторы для освобождения памяти в C++, Как мы можем использовать delete or delete[] Не правда ли, что вся память, используемая программой, освобождается, когда программа завершается.
350 просмотров
schedule 05.12.2022

C++: разрешение зависимостей списка инициализаторов конструктора с помощью RAII
Одна особенно сложная вещь для безопасной настройки — это GLX. Проблема в том, что должно быть выделено довольно много ресурсов и освобождено в правильном порядке в случае ошибок в любой момент во время инициализации. Вот что я написал на C...
256 просмотров
schedule 14.08.2022

нетиповой параметр зависит от аргументов, которые идут после него
Я пишу шаблонный класс, который инкапсулирует RAII-обработчики win32. Это то, что у меня есть до сих пор: #define NOMINMAX #include <Windows.h> #include <functional> // problem: optionally pass additional params to the deleter...
105 просмотров
schedule 31.07.2022

Почему стандартные файловые потоки С++ не соответствуют соглашениям RAII более точно?
Почему потоки стандартной библиотеки C++ используют семантику open() / close() , отделенную от времени существования объекта? Закрытие при уничтожении может по-прежнему технически делать классы RAII, но независимость получения/освобождения оставляет...
4608 просмотров
schedule 29.10.2022

Poco AsyncChannel не завершается при выходе из разветвленного процесса
Проблема: Вызовите/инициализируйте код Poco из библиотеки C, используя загрузчик (сторонняя программа C, наш код написан на C++). Программа загружает нашу библиотеку, наша библиотека инициализирует Poco::Logger и использует AsyncChannel +...
353 просмотров
schedule 17.04.2023

Множественный конструктор RAII
Я только что узнал о RAII. Насколько я понимаю, определение RAII содержится в самом его названии. Например, (пусть A будет классом) рассмотрим следующую функцию ниже: void foo(){ A a; a.init(); // Do stuff with a. a.destroy(); }...
84 просмотров
schedule 18.08.2022

Как вызывается деструктор для временных объектов, возвращаемых функцией в C++?
Вот код из «Языка программирования C++» Страуструпа, который реализует finally , который я не могу понять, где вызывается деструктор. template<typename F> struct Final_action { Final_action(F f): clean{f} {} ~Final_action() { clean();...
1246 просмотров
schedule 29.01.2023

Понимание объекта RAII
Я читаю о принципе RAII и у меня есть несколько вопросов по этому поводу. По сути, он инкапсулирует ресурс. Итак, рассмотрим класс std::string . Он имеет конструктор string (const char* s); . Так, например, умные указатели (например, явный...
116 просмотров
schedule 06.08.2022