Null pointer in __vptr
Ali Çehreli
acehreli at yahoo.com
Fri Nov 19 21:09:16 UTC 2021
On 11/19/21 10:04 AM, frame wrote:
> On Friday, 19 November 2021 at 15:46:41 UTC, Adam D Ruppe wrote:
>
>> The `destroy` function (as well as other class destruction) will null
>> out the whole vtable to help make use-after-free an obvious error.
>> Possible that happened to you.
>
> So, a partial nulled table shouldn't exist, right? like this:
>
> __vptr[0]: address
> __vptr[1]: 0000000
> __vptr[2]: address
> __vptr[3]: address
> __vptr[4]: address
> __vptr[5]: address
> ....
>
> Because 0 should point to the object instance
I am not sure that's correct. The way I picture it, the code reaches the
__vptr by following a pointer; so it's already known. Additionally, I am
under the impression that there is only one __vptr for a given type,
which all class objects of that type point to.
> and next offsets are pointers to the member functions, correct?
My understanding is that all entries are that.
Ali
More information about the Digitalmars-d-learn
mailing list