Возможный дубликат:
Почему sizeof для структуры не равен сумме sizeof каждого члена?
Я случайно создал Struct, и его размер удивил меня, потому что результат не равен моим вычислениям:
int main( int argc, char ** argv ) {
struct S
{
int i;
int b;
int c;
long int e;
};
cout << sizeof (struct S) << endl; //sizeof is still an operator
return 0;
}
Обычно 3 * int + 1 * long int = 3 * 4 + 8 = 20.
Тем не менее, результат 24.
Откуда эти 4 байта?
Ваш struct
является подбитый по четыре байта, предположительно для размещения long int
на 8-байтовой границе, чтобы ускорить доступ к ней. Это зависит от платформы: не все компиляторы будут добавлять эти байты.
Других решений пока нет …