Workaround for typeid access violation
Etienne via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 16 09:28:53 PDT 2015
On Tuesday, 16 June 2015 at 15:39:06 UTC, rsw0x wrote:
> destructors as they are shouldn't exist at all, they are
> incredibly bug prone.
>
> Bye.
To be fair, everything is bug prone until you understand them. GC
finalization is done in a single lock, none of the memory is
re-used, so objects can have their own "destroyed" flags and
destroy eachother fine if the typeinfo issue isn't there.
On the other hand, by keeping the GC destructors, we must agree
that all the destructors are declared this way:
shared @nogc nothrow ~this()
Only then can we count it in as having predictable behavior.
I can't really agree on removing finalizers, I'd really love to
master GC destructors in D so that I can return plain class
objects from my functions with data allocated elsewhere, like in
any managed language out there. It's really the only way. Don't
get me wrong, I allocate and free on a freelist or pool
everywhere I can, but the GC has its advantages and I'd really
like to put it to work (safely) to build more convenient APIs.
More information about the Digitalmars-d
mailing list