Sobes.tech
Back to questions
Junior — Middle
81

Можешь привести примеры ресурсов, управляемых с помощью RAII, кроме умных указателей?

Companies where asked
ГК Адепт

Answer from AI

sobes.tech AI

RAII (Resource Acquisition Is Initialization) — это идиома в C++, которая связывает время жизни ресурса с временем жизни объекта.

Кроме умных указателей, RAII часто применяется для управления:

  • Файловыми дескрипторами: класс открывает файл в конструкторе и закрывает в деструкторе.
  • Мьютексами и блокировками: объект блокирует ресурс при создании и разблокирует при уничтожении, например, std::lock_guard.
  • Сетевыми соединениями: открытие соединения в конструкторе и закрытие в деструкторе.
  • Памятью, выделенной вручную: обертки для динамического выделения и освобождения памяти.

Пример с блокировкой мьютекса:

std::mutex mtx;

void func() {
    std::lock_guard<std::mutex> lock(mtx); // блокирует мьютекс
    // критическая секция
} // при выходе из функции lock_guard уничтожается и мьютекс разблокируется

Такой подход гарантирует освобождение ресурса даже при исключениях.