для более подробной информации о ABI.

от вопрос уже есть ответ здесь:

При расширении структуры с дополнением, почему нельзя добавить дополнительные поля в дополнение к хвосту? 4 ответа

Я склонен думать, что довольно хорошо разбираюсь во внутреннем пространстве C ++ и разметке памяти, но это меня расстроило. У меня есть следующий тестовый код:

#include <stdio.h>

struct Foo
{
    //Foo() {}
    int x;
    char y;
};

struct Bar : public Foo
{
    char z[3];
};

int main()
{
    printf( "Foo: %u Bar: %u\n", (unsigned)sizeof( Foo ), (unsigned)sizeof( Bar ) );
}

Вывод обоснованный:

Пн: 8 Бар: 12

Однако, это очень странная часть, если я раскомментирую этот простой конструктор по умолчанию в Foo (), то sizeof (Bar) изменится! Как добавление ctor может изменить структуру памяти этих классов?

Foo: 8 Бар: 8

Скомпилировано с использованием gcc-7.2

Ответы на вопрос(0)

Ваш ответ на вопрос