strange work of GC
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Feb 6 13:07:13 PST 2015
On Friday, 6 February 2015 at 20:38:07 UTC, Andrey Derzhavin
wrote:
> As I think, the garbage collector should start destoying of the
> C1 and C2 objects of arr array during the "while" cycle
> prosess, but this does not
> happen. Dtors are not called.
Garbage is only collected when you allocate memory. You're just
`sleep`ing in the loop which doesn't allocate anything, and so it
doesn't trigger garbage collections.
> If I use the manual destroying of objects C1 and C2 by
> "destroy" method, the dtors of C1 and C2 objects are normally
> called, but it can't be safe.
right
> If I use the GC.collect method after fn1, I get an error:
> "core.exception.InvalidMemoryOperationError@(0)".
> Is this a bug of GC or I do something wrong?
This is you GC allocating in a destructor (the writeln calls).
The GC can't handle that.
More information about the Digitalmars-d-learn
mailing list