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.
The D GC only runs on demand - typically, when you allocate new
memory is when the gc might run. This keeps totally hidden pauses
from happening, so you at least can avoid a collection at a bad
time for your program.
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?
You used GC memory from inside a destructor. That's an illegal
operation; read the tip of the week from Sunday's newsletter to
see a bit more:
http://arsdnet.net/this-week-in-d/feb-01.html