2016-01-17 18 views
6

Wie verwaltet D Eigentümer von Objekten? Zum Beispiel muss ich folgendes ausdrücken: mit std::shared_ptr + std::weak_ptrSchwache Referenzen oder Zeiger

1.) Allocate an object 
2.) Give out references/pointers 
3.) If the initially allocated object is deleted, 
    all references/pointers should become inaccessible. 

In C++ dies möglich ist. Ist das auch in D möglich?

+0

Siehe https://dlang.org/spec/garbage.html, um zu verstehen, wie Sie die Lebensdauer von Objekten steuern können. –

+0

@key_ Sind Sie sicher, dass Sie den richtigen Link gepostet haben? Ich kann nichts in Bezug auf Life-Time-Management finden. –

+0

Sie sollten eine versiegelte Referenz implementieren und die Zeiger dann auf Zeiger halten, wenn Sie eine übergeben. Diese Zeiger werden sich ihrer eigenen Lebenszeit bewusst sein, um sich von der Liste zu entfernen ... es ist ein erheblicher Teil des Overheads involviert. Schwache Referenzen selbst sind einfach - machen Sie einfach einen Zeiger, den der GC nicht scannt, oder erhöhen Sie nicht Ihren Refcount - aber sie zu entwerten, wenn das Objekt gelöscht wird, ist schwieriger. –

Antwort

2

Im Moment gibt es keine gute Umsetzung des schwachen Verweises in D.

Bitte überprüfen Sie diese beiden Themen im Forum:

Fehlerhafte oder „fast "Korrekte Implementierungen:

Das größte Problem ist, dass Sie eine gute API um schwache Verweise benötigen. Java und .NET haben es, und es ist wohl schlecht. Aus gutem Grund - es ist schwer, eine gute API zu finden!

+1

Ich hasse es, dass so viele D-Forum-Threads Dollarzeichen in der URL haben. Bah, es zerbricht viele Detektoren. –

Verwandte Themen