Назад к вопросам
101ХР
Junior — Middle
83
Объясните принцип работы умного указателя shared_ptr в C++ и его преимущества.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
shared_ptr — это умный указатель в C++, который реализует подсчёт ссылок на динамически выделенный объект. Он хранит количество активных владельцев объекта и автоматически удаляет объект, когда последний shared_ptr, указывающий на него, уничтожается или переназначается.
Преимущества:
- Автоматическое управление временем жизни объекта, предотвращая утечки памяти.
- Позволяет нескольким частям программы совместно владеть объектом.
- Безопасен при исключениях, так как освобождение памяти происходит автоматически.
Пример использования:
#include <memory>
#include <iostream>
int main() {
std::shared_ptr<int> p1 = std::make_shared<int>(42);
{
std::shared_ptr<int> p2 = p1; // счетчик ссылок увеличивается
std::cout << *p2 << std::endl; // вывод: 42
} // p2 выходит из области видимости, счетчик уменьшается
std::cout << *p1 << std::endl; // объект все еще жив
} // p1 выходит из области видимости, объект удаляется