Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Циклічні Посилання та Спільні Вказівники | Спільні Вказівники
Розумні Вказівники C++
course content

Зміст курсу

Розумні Вказівники C++

Розумні Вказівники C++

1. Вступ до Розумних Вказівників
2. Унікальні Вказівники
3. Спільні Вказівники
4. Слабкі Вказівники
5. Просунуті Теми

book
Циклічні Посилання та Спільні Вказівники

Під час роботи з std::shared_ptr ви можете зіткнутися з проблемою, відомою як циклічне посилання. Циклічне посилання виникає, коли два об'єкти утримують shared_ptr посилання один на одного. Оскільки shared_ptr використовує підрахунок посилань, кількість ніколи не досягає нуля, що спричиняє витік пам'яті.

cpp

main

copy
1234567891011121314151617181920212223242526
#include <iostream> #include <memory> class B; // Forward declaration class A { public: std::shared_ptr<B> p_b; ~A() { std::cout << "A destroyed\n"; } }; class B { public: ~B() { std::cout << "B destroyed\n"; } std::shared_ptr<A> p_a; }; int main() { std::shared_ptr<A> a = std::make_shared<A>(); std::shared_ptr<B> b = std::make_shared<B>(); a->p_b = b; b->p_a = a; }

Існує спосіб вирішити цю проблему, вам потрібно використовувати інший тип розумного вказівника.

question mark

Яку проблему викликає циклічне посилання в std::shared_ptr?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 3
We're sorry to hear that something went wrong. What happened?
some-alt