delete and references?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Aug 8 09:42:28 PDT 2009


Jarrett Billingsley wrote:
> On Sat, Aug 8, 2009 at 9:42 AM, Andrei
> Alexandrescu<SeeWebsiteForEmail at erdani.org> wrote:
>> Jarrett Billingsley wrote:
>>> On Sat, Aug 8, 2009 at 9:17 AM, Andrei
>>> Alexandrescu<SeeWebsiteForEmail at erdani.org> wrote:
>>>> FWIW, I am trying to convince Walter to not reclaim memory in delete, but
>>>> instead only call destructors. D continues C++'s mistake of conflating
>>>> lifetime termination with memory reclamation.
>>> Why?  Instead of dangling pointers, you'd end up with pointers to
>>> finalized objects, which would probably lead to harder-to-catch bugs
>>> (since then you wouldn't even get a segfault).
>> Getting a segfault == lucky
> 
> And the alternative - using a "dead" object - is any better?

Yes. I've internalized this so deeply, I won't even debate it.

>>> And what if you used it to try to delete a temporary array?  Yes, you
>>> could use malloc/free for the temp array, but.. it just seems silly to
>>> have to dip into C functions to do that.
>> Why? It's not a frequent need.
> 
> That's enough of a justification to change delete's behavior?

I believe it is.

> I just don't know why it should be changed.  It's a blunt tool for
> blunt uses.  When you delete something, you're telling the GC "I don't
> need this anymore, *trust me*", so *not* freeing memory associated
> with it seems silly.

We do have blunt tools for blunt uses: malloc and free. We don't need 
more of those.


Andrei



More information about the Digitalmars-d mailing list