Как слабый_ptr предотвращает циклические ссылки?C++

Программы на C++. Форум разработчиков
Anonymous
Как слабый_ptr предотвращает циклические ссылки?

Сообщение Anonymous »

Я читаю книгу Скотта Мейерса «Эффективный C++». Было упомянуто, что tr1::shared_ptr и tr1::weak_ptr действуют как встроенные указатели, но они отслеживают, сколько tr1::shared_ptr указывают на объект.

Это называется подсчетом ссылок. Это хорошо работает для предотвращения утечек ресурсов в ациклических структурах данных, но если два или более объектов содержат tr1::shared_ptrs, так что формируется цикл, цикл может поддерживать счетчик ссылок друг друга выше нуля, даже если все внешние указатели цикла были уничтожены.

И вот здесь на помощь приходит tr1::weak_ptrs.

Мой вопрос заключается в том, как структурируются циклические данные. сделать счетчик ссылок выше нуля. Я прошу пример программы на C++. Как проблема решается слабым_ptrs? (опять же, пожалуйста, с примером).

Подробнее здесь: https://stackoverflow.com/questions/498 ... references

Вернуться в «C++»