Destructing Struct

ketmar ketmar at ketmar.no-ip.org
Wed Feb 21 12:07:47 UTC 2018


Jiyan wrote:

> Hi :),
>
> What i thought was that when i create a struct dynamically i can just 
> deconstruct it with __dtor lets say:
>
> struct U {...}
> struct S {... private U _member;}
>
> S* p;
> p = cast(S*)malloc(S.sizeof);
>
> // just run that if it compiles, for simplicity
> // we dont use __traits(compiles, ...)
> p.__dtor;
>
> The thing here is that this doesn't work because of when S has an element 
> that that is private and has a __dtor itself, the __dtor from U doesnt 
> get called before the call of __dtor from S - or after.
>
> Is there any way with traits or sth to do that?
>
> Are delete, destroy or any other functions the standard library working 
> here?
> I would prefer a solution that can be build by myself - so without the 
> standard library for example with traits.
>
> Thanks :)

`p.destroy` will call the dtors for you. you'd better not use `__`-frefixed 
symbols yourself, as they aren't actually a part of a language, they're just
implementation details.


More information about the Digitalmars-d-learn mailing list