Как D управляет владением объектами? Например мне нужно выразить следующее:Слабые ссылки или указатели
1.) Allocate an object
2.) Give out references/pointers
3.) If the initially allocated object is deleted,
all references/pointers should become inaccessible.
В C++
это возможно с std::shared_ptr
+ std::weak_ptr
. Возможно ли это и в D?
См. Https://dlang.org/spec/garbage.html, чтобы лучше понять, как вы можете контролировать время жизни объектов. –
@key_ Вы уверены, что разместили правильную ссылку? Я не могу найти ничего, связанного с управлением временем жизни. –
Вы захотите реализовать запечатанную ссылку, а затем укажете указатели на указатели, когда вы отпустите ее. Эти указатели захотят узнать о своей собственной жизни, чтобы удалить себя из списка ... есть много накладных расходов. Слабые ссылки сами по себе легки - просто создайте указатель, который GC не сканирует, или не увеличивайте ваш refcount, но недействительным, когда объект удален, сложнее. –