Какие стандартные средства C++ используют RAII? Использует ли его std::vector?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

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

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

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

std::mutex mtx;

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

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку