InvalidMemoryOperationError when calling functions from destructors

Vladimir Panteleev vladimir at thecybershadow.net
Sat Apr 27 07:58:25 PDT 2013


On Saturday, 27 April 2013 at 06:12:03 UTC, Steven Schveighoffer 
wrote:
> On Thu, 25 Apr 2013 10:57:13 -0700, Vladimir Panteleev 
> <vladimir at thecybershadow.net> wrote:
>
>> On Thursday, 25 April 2013 at 16:17:57 UTC, Jacob Carlborg 
>> wrote:
>>> You cannot access GC controlled memory in class destructors.
>>
>> Not true.
>
> Can you be more specific?  Maybe the wording was too strong.  
> Should say "you shouldn't access GC controlled memory in class 
> destructors."
>
> Or are you thinking of some specific case?  Because the 
> opposite of the above is DEFINITELY not true.  I just want to 
> make that clear.

Last time I checked, destructors were called separately from 
deallocation. Thus, referencing memory will not result in 
undefined behavior. The order of destruction is 
non-deterministic, but otherwise, it's the same as accessing a 
clear()'d object, which is perfectly safe (from a memory safety 
perspective).


More information about the Digitalmars-d mailing list