The code that I've written:
#include <iostream>
using std::cout;
using std::endl;
struct S
{
    long l;
};
struct A
{
    int a;
};
struct B : A, S{ };
int main()
{
    cout << "sizeof(A) = " << sizeof(A) << endl; //4
    cout << "sizeof(S) = " << sizeof(S) << endl; //8
    cout << "sizeof(B) = " << sizeof(B) << endl; //16 != 4 + 8
}
Why do we have to allocate an additional 4 bytes for B? How this additional memory is used?
 
     
    