Adam D. Ruppe's "D Cookbook" now available!

Steven Schveighoffer via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu May 29 07:42:02 PDT 2014


On Thu, 29 May 2014 09:57:40 -0400, Adam D. Ruppe  
<destructionator at gmail.com> wrote:

> On Thursday, 29 May 2014 at 13:01:50 UTC, Szymon Gatner wrote:
>> Later in same chapter: "... or being collected by the garbage  
>> collector—its destructor is called, if present."
>>
>> Is that really true?
>
> hmm, you seem to be right, but this might be a bug. I'm pretty sure the  
> struct dtors were called on arrays not long ago but it isn't really  
> reliable with the GC (My weasel word there is "provably", sometimes the  
> GC can't prove there are no references; false pointers etc) but still  
> blargh this current reality seems weird.

The GC never has called struct destructors for arrays of structs or  
individual structs allocated on the heap.

It will call destructors on structs that are members of classes ONLY  
because the class destructor will call the struct destructor.

One other situation a heap allocated struct will have it's destructor  
called (I think) is due to a closure allocation, but I'm not 100% sure how  
that works. A way to verify is to make a closure occur, then test the  
closure's block to see if FINALIZE flag is set on it.

-Steve


More information about the Digitalmars-d-announce mailing list