Я читаю книгу Скотта Мейерса "Эффективный С++". Было упомянуто, что tr1::shared_ptr
и tr1::weak_ptr
действуют как встроенные указатели, но они отслеживают, сколько tr1::shared_ptrs
указывает на объект.
Это называется подсчетом ссылок. Это хорошо работает в предотвращении утечек ресурсов в ациклических структурах данных, но если два или более объекта содержат tr1::shared_ptrs
, так что цикл формируется, цикл может поддерживать счетчик ссылок выше нуля, даже если все внешние указатели на цикл были уничтожены.
Что там, где tr1::weak_ptrs
.
Мой вопрос в том, как циклические структуры данных делают число ссылок выше нуля. Я прошу пример программы на С++. Как решить проблему с помощью weak_ptrs
? (опять же, пожалуйста, пример).