Все знают про padding:
#include <iostream>
struct Foo {
char a; // 1
int b; // 4
double c; // 8
};
struct Bar {
char a; // 1
double c; // 8
int b; // 4
};
int main() {
std::cout << sizeof(Foo) << '\n'; // 16
std::cout << sizeof(Bar) << '\n'; // 24
}
Размер структуры Foo 16, а у Bar, несмотря на то, что переменные тех же типов, размер 24. Потому что double размера 8 должен быть помещен по адресу памяти, кратному размеру самой переменной, поэтому место между переменными заполняется 8 фейковыми байтами.
Это классика, но вопрос не про это. Утверждение:
Размер структуры невозможно поменять, переставив переменные в ней В ОБРАТНОМ ПОРЯДКЕ
Задача - доказать что утверждение верно или привести контрпример.
Как я сказал, задача на самом деле практическая, подробности в следующем посте.