Упаковка данных и указатель vtable

Это дополнительный вопрос к тому, который я отправил вчера:

sizeof (myobject) не то, что я рассчитал

Я создаю класс и вычисляю его размер, используя sizeof(myclass), Размер 12 байт. Затем я добавляю виртуальных членов, и размер увеличивается до 24 байт. Кажется, снова возникает проблема с упаковкой данных (поскольку размер указателя vtable составляет всего 8 байт).

Итак, мой вопрос: можно ли сказать компилятору поместить указатель vtable перед остальными членами данных, чтобы я мог сохранить эти дополнительные 4 байта неиспользуемого пространства? Я знаю, что могу заказать элементы данных, но могу ли я «заказать» указатель vtable?

Джон

0

Решение

Скорее всего, упорядочивание не является проблемой, ваш указатель vtable должен быть выровнен на 8 байт, даже если у вас есть массив. Если бы размер был 20, у каждого второго элемента в массиве был бы указатель vtable, который был смещен на 4 байта.

(Имейте в виду, это не содержание указателя vtable, который был бы выровнен. В массиве все указатели vtable равны)

0

Другие решения


По вопросам рекламы [email protected]