Smart pointers instead of GC?

Steven Schveighoffer schveiguy at yahoo.com
Tue Feb 4 14:17:39 PST 2014


On Tue, 04 Feb 2014 16:37:20 -0500, Ola Fosheim Grøstad  
<ola.fosheim.grostad+dlang at gmail.com> wrote:

> If you blindly use ARC rather than sane RC. There is no reason to up the  
> ref count if the data structure is "owned" while processing it. Which is  
> a good reason to avoid ARC and use regular RC. If you know that the  
> entire graph has a 1+ count, you don't need to do any ref counting while  
> processing it.

This is an important point. However, the default is to be safe, and good  
enough for most. As long as there is a way to go into "I know what I'm  
doing" mode for encapsulated low-level code, the default should be to do  
ARC. ARC should handle simple cases, like if the reference only ever  
exists as a stack local.

One could also say you could mark a memory region as no-scan if you know  
that the data it points at will never be collected for its entire  
existence in a GC environment.

I think some mix of GC and ref counting for D would be extremely useful.

In my major Objective C project, I use manual reference counting, and I do  
avoid extra retains for redundant pointers. I've also had a few bugs  
because of that :)

-Steve


More information about the Digitalmars-d mailing list