Sobes.tech
Junior — Middle
101

RAII көмегімен басқарылатын ресурстардың мысалдарын келтіре аласыз ба, ақылды көрсеткіштерден басқа?

Сұралған компаниялар
ГК Адепт

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 уничтожается и мьютекс разблокируется

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