Это дополнительный вопрос к тому, который я отправил вчера:
sizeof (myobject) не то, что я рассчитал
Я создаю класс и вычисляю его размер, используя sizeof(myclass)
, Размер 12 байт. Затем я добавляю виртуальных членов, и размер увеличивается до 24 байт. Кажется, снова возникает проблема с упаковкой данных (поскольку размер указателя vtable составляет всего 8 байт).
Итак, мой вопрос: можно ли сказать компилятору поместить указатель vtable перед остальными членами данных, чтобы я мог сохранить эти дополнительные 4 байта неиспользуемого пространства? Я знаю, что могу заказать элементы данных, но могу ли я «заказать» указатель vtable?
Джон
Скорее всего, упорядочивание не является проблемой, ваш указатель vtable должен быть выровнен на 8 байт, даже если у вас есть массив. Если бы размер был 20, у каждого второго элемента в массиве был бы указатель vtable, который был смещен на 4 байта.
(Имейте в виду, это не содержание указателя vtable, который был бы выровнен. В массиве все указатели vtable равны)