Размер этой структуры

Возможный дубликат:
Почему 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 байта?

2

Решение

Ваш struct является подбитый по четыре байта, предположительно для размещения long int на 8-байтовой границе, чтобы ускорить доступ к ней. Это зависит от платформы: не все компиляторы будут добавлять эти байты.

5

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

Других решений пока нет …

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