sizeof with virtual inheritance
Eljay Love-Jensen
eljay@adobe.com
Fri May 7 20:30:00 GMT 2004
Hi Adrian,
>Your comments apply generally to multiple inheritance, you didn't say
anything about virtual inheritance.
No, my comments were specifically about virtual inheritance.
Look at the memory layout of c4, which is 8 bytes:
c4 : byte[0 ... 3]
c4.c1 : byte[4]
c4.pad : byte[5 ... 7]
Those [0 ... 3] four bytes for the c4 portion (alone) of c4 contains the
pointer for the multiple inheritance overhead.
- - - - - -
Look at the memory layout of c6, which is 2 bytes:
c6.c2.c1 : byte[0]
c6.c2.c3.c1 : byte[1]
Nothing interesting here. Straightforward.
- - - - - -
Look at the memory layout of c7, which is 12 bytes:
c7.c4 : byte[0 ... 3]
c7.c5. : byte [4 ... 7]
c7.c4.c1 & c7.c5.c1 : byte[8]
c7.pad : byte[9 ... 11]
The [0 ... 3] four bytes for the c7.c4 portion (alone) contains the c4
pointer for the multiple inheritance.
The [4 ... 7] four bytes for the c7.c5 portion contains the c5 pointer for
the multiple inheritance.
The padding is alignment padding.
HTH,
--Eljay
More information about the Gcc-help
mailing list