Variables with scoped destruction in closures
    Steven Schveighoffer via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Fri Oct 14 10:55:18 PDT 2016
    
    
  
On 10/14/16 6:18 AM, Nordlöw wrote:
> The following code
>
>
> import std.algorithm.iteration : filter;
> import std.algorithm.mutation : move;
> import std.range : iota;
>
> static private struct S
> {
>     import core.memory : GC;
>     @disable this(this);
>
>     this(int x)
>     {
>         _ptr = cast(typeof(_ptr))GC.malloc((*_ptr).sizeof);
>         *_ptr = x;
>     }
>
>     ~this() { GC.free(_ptr); }  // scoped destruction
Note: no matter what solution you can come up with, having the GC 
destroy this struct, and the destructor attempting to free the pointer, 
is going to result in errors.
Instead, you should use C malloc/free here.
This is what RefCounted does.
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list