Preventing nested struct destructor accessing stack frame
Nick Treleaven
nick at geany.org
Fri Dec 23 12:01:07 UTC 2022
On Tuesday, 20 December 2022 at 06:31:09 UTC, ag0aep6g wrote:
> On 16.12.22 14:07, Nick Treleaven wrote:
>> This seems to work:
>>
>> ~this() @trusted { if (&i > cast(void*)1024) i++; }
>>
>> It would be better if there was a struct property to get the
>> context pointer though.
>
> A quick test suggests that the context pointer is the last item
> in `tupleof`. So this might do the trick:
>
> ~this() { if (this.tupleof[$ - 1] !is null) i++; }
>
> I don't know if it's guaranteed to work though. Might be an
> implementation detail.
Great, thanks. The struct tupleof docs just link to the class
tupleof docs, which say:
> The order of the fields in the tuple matches the order in which
> the fields are declared.
So I think for a struct the context pointer has to come after any
fields.
More information about the Digitalmars-d-learn
mailing list