RCArray is unsafe

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Tue Mar 3 09:00:15 PST 2015


On Tuesday, 3 March 2015 at 16:31:07 UTC, Andrei Alexandrescu 
wrote:
>> I was dazzed, but I'm not anymore. I wrote my concern here:
>>
>> http://forum.dlang.org/post/ylpaqhnuiczfgfpqjuww@forum.dlang.org
>
> There's a misunderstanding here. The object being assigned 
> keeps a trailing list of past values and defers their 
> deallocation to destruction. -- Andrei

So you need an extra pointer per instance? Isn't that a big price 
to pay? Is the only problem we're still trying to solve aliasing 
which is not recognized as such and therefore doesn't bump the 
refcounter like it should? An extra pointer would be overkill for 
that. Isn't it better to just recognize the aliasing when it 
happens?

As far as taking the address of an RcArray element, the type of 
which element is not itself Rc'ed, it's a different problem. The 
only thing I've been able to come up with is maybe to create a 
wrapper type within RcArray for the individual elements, and have 
that type do refcounting on the parent instead of itself, if 
that's possible.


More information about the Digitalmars-d mailing list