Assume that i have a structure which is defined as shown below:
typedef struct
{
char a;
int b;
char c;
}abc_t;
Now as per the rules of padding, character variable could start at any address since it has only a single byte while intger variable should start at an address which is divisible by 4 while short variable should start at any even address. in that case if we assume that character variable starts at OFFSET 0.
struct
{
char a; // OFFSET 0+3 bytes padding
int b; // OFFSET 4
char c; //OFFSET 5+3 bytes padding
}abc_t;
Here the total size of structure would become 12.
But my doubt is if the first element of a structure which is 'char a' here starts at an offset 1 , then based on the rules of padding, we would have only 2 bytes padded after a and hence the size of structure would be 8 bytes.
struct
{
char a;//OFFSET 1+2 bytes
int b;//OFFSET 4
char c;//OFFSET 8
}abc_t;
Same would be the case of any structure variable which would start with short variables. Can you please tell me if my understanding regarding this is correct or can we safely assume that first member of any structure would always start at an address which is divisible by 4?
Thanks a lot in advance.