Sobes.tech
Junior — Middle

Paaiškinkite išmaniojo rodyklio shared_ptr veikimo principą C++ ir jo pranašumus.

sobes.tech AI

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