weak_ptr.
cpp
weak_ptr совместно с shared_ptr используется для решения проблемы циклических ссылок и предотвращения "зависания" памяти, когда два или более объекта, управляемых shared_ptr, ссылаются друг на друга, и счетчики ссылок никогда не достигают нуля.
Вот основные свойства weak_ptr:
weak_ptr хранит "слабую" ссылку на объект, управляемый shared_ptr, не увеличивая при этом его счетчик сильных ссылок.lock() можно попытаться получить shared_ptr из weak_ptr. Если объект еще жив, lock() вернет действительный shared_ptr; в противном случае - пустой shared_ptr.weak_ptr не предоставляет прямого доступа к содержимому объекта с помощью операторов * или ->. Доступ возможен только после успешного вызова lock().Использование weak_ptr является стандартным способом разорвать циклы ссылок в структурах данных, использующих shared_ptr, таких как графы или двусвязные списки.