Назад к вопросам
МТС
Junior — Middle
97
Какова цель использования std::shared_ptr в C++ и чем он отличается от других умных указателей?
Компании, где спрашивали
Baum
ГК Адепт
Ответ от нейросети
sobes.tech AI
std::shared_ptr в C++ используется для совместного владения динамически выделенным объектом. Он хранит счётчик ссылок — количество shared_ptr, указывающих на один объект. Когда последний shared_ptr уничтожается или переназначается, объект автоматически удаляется.
Отличия от других умных указателей:
std::unique_ptrвладеет объектом единолично, не поддерживает копирование, только перемещение.std::weak_ptr— слабая ссылка на объект, управляемый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; // 42
} // p1 уничтожается, объект удаляется
Таким образом, shared_ptr удобен для совместного владения ресурсами с автоматическим управлением временем жизни объекта.