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

Reply via email to