Sobes.tech
Back to questions
Junior — Middle
84

Объясните принцип работы умного указателя shared_ptr в C++ и его преимущества.

Companies where asked
101ХР101ХР

Answer from AI

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 выходит из области видимости, объект удаляется