std.expreimantal.allocator deallocate

vitamin vit at vit.vit
Mon Jan 25 16:28:49 UTC 2021


On Monday, 25 January 2021 at 10:28:11 UTC, Jacob Carlborg wrote:
> On Sunday, 24 January 2021 at 11:00:17 UTC, vitamin wrote:
>
>> void destruct(Base base){
>>     void[] x = (cast(void*)base)[0 .. 
>> __traits(classInstanceSize, Base)];
>>     writeln("deallocate: ", x.length);
>>     theAllocator.deallocate(x);
>> }
>
> You can get the dynamic size of an object using 
> `typeid(base).initializer.length`.
>
> Base base = new Derived;
> assert(__traits(classInstanceSize, Derived) == 
> typeid(base).initializer.length);
>
> --
> /Jacob Carlborg

I implementing ref counted pointer with support for weak 
pointers. Problem was that expired weak pointer can point to 
already destroyed data => typeid() no longer work or ref type is 
extern(C) class => typeid() doesn't work.


More information about the Digitalmars-d-learn mailing list