Access Violation Tracking

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Nov 10 03:13:11 PST 2014


On Sunday, 9 November 2014 at 14:45:11 UTC, ketmar via 
Digitalmars-d-learn wrote:
> On Sun, 09 Nov 2014 09:33:29 -0500
> Etienne via Digitalmars-d-learn 
> <digitalmars-d-learn at puremagic.com>
> wrote:
>
>> I've seen a lot more invalid memory operation errors since the 
>> GC calls destructors. Letting the GC destroy objects out of 
>> order can be the issue. We might have to make an associative 
>> array of static global flags (debug bool[void*]) for each 
>> object to see if it was destroyed, and use asserts in the 
>> destructors / update the associative array, as a new idiom.
> that's where i want precise GC to come into play. i really want 
> it to
> nullify all internal pointers to finalized objects before 
> calling
> destructor. sure, this can modify alot of members, so it must 
> be opt-in
> feature.
>
> ah, and stop calling class finalizers "destructors" helps too. 
> they
> are... well... finalizers, not destructors. ;-)

I once suggested to introduce dedicated finalizers that get 
called instead of the destructor by the GC, and nobody argued 
against it ;-)

They would be applicable to both classes and structs. A finalizer 
may only perform a subset of what's allowed in destructors, and 
the compiler might be able to verify that. For DRYness, the 
finalizer can optionally be called by the destructor, because 
everything that is valid in a finalizer should also be valid in a 
destructor.


More information about the Digitalmars-d-learn mailing list