As per my knowledge, By default 4-byte alignment will be done. say
typedef struct { int data7; unsigned char data8; //3 -bytes will be added
data7 is a 4-byte item, so the compiler will normally attempt to align it to an address that's a multiple of 4.
data7
data1 is a one-byte item, so the compiler won't try to align it to any particular boundary (i.e., there would be no real gain from doing so).
data1