Call of rmdir in destructor causes InvalidMemoryOperationError

thedeemon via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jan 1 08:07:06 PST 2015


On Thursday, 1 January 2015 at 15:14:41 UTC, Timo Gransch wrote:
> Hi,
>
> I have a class which unzips an archive into a temporary 
> directory below the system temp folder. I want to delete this 
> temporary directory in the class's destructor, but when I call 
> rmdir there, I get an
>
> core.exception.InvalidMemoryOperationError@(0)

Destructors are usually called by GC, during a GC cycle, so 
allocating and deallocating memory is not allowed there. If some 
function allocates, reallocates or deallocates, it will cause 
this very error. This means you shouldn't use any functions in a 
destructor that are not @nogc.

Solution in this case: call rmdir not from destructor.


More information about the Digitalmars-d-learn mailing list