Workaround for typeid access violation
rsw0x via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 16 13:08:35 PDT 2015
On Tuesday, 16 June 2015 at 16:28:54 UTC, Etienne wrote:
> 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.
No, they are just bug prone.
> 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.
Implementation-defined behavior.
>
> 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.
Still not predictable, as they can be ran in any thread, in any
order, and be ran parallel.
>
> 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.
You're attempting to use GC for a problem that they don't solve
because you don't have other tools to fix it. When all you have
is a hammer, everything looks like a nail.
More information about the Digitalmars-d
mailing list