Is there a weak pointer or references in D?

Era Scarecrow rtcvb32 at yahoo.com
Sat Jan 12 18:45:47 PST 2013


On Sunday, 13 January 2013 at 00:56:59 UTC, Charles Hixson wrote:
> I don't think reference counting would work for my purposes, 
> which is why I wanted a "weak pointer".  There will usually be 
> many live references at the time I need to release an item.  If 
> I'd had weak pointers I could have made almost all of them weak 
> pointers.  I want to release things that are stale, not things 
> that are unreferenced.  I was trying to avoid needing to cycle 
> through the entire data structure.

  Just off hand I think I'm recalling that in C++ the weak 
pointers were related and part of the main reference counting; An 
allocated (heap) control block handled the references and memory. 
If then you were to extended a second number to represent weak 
pointers, they would be for when the control block could free 
itself (vs the data with the strong pointers).

  But the GC wouldn't be part of it most likely unless the control 
block itself was leaked in it's entirety. That might be safe 
(mostly); In those cases you'd have to test the control block 
which would tell you if the pointer was still valid or not.

  Well I got my hands full so I won't be the to touch this 
possible implementation; At least for a while.


More information about the Digitalmars-d-learn mailing list