Hi,

I was looking for the answer of this answer quite long. Thanks the explanation in the comment was really awesome. Thanks.

Please help me correct my understanding.

The padding is done, so that OS has not to perform multiple read operation. (But it's desirable to perform rest of computation for segregating the unwanted read bits)
For example
Code:
struct A
{
    char ch;       // let memory address be 1000, 1001
    char ch1;     // 1002, 1003
    int i;             // 1004, 1005, 1006, 1007
};

struct A a;
char c1 = a.ch;     // (1)
char c2 = a.ch1;   // (2)
int ii = a.i;             // (3)
For perform the the (1), (2) and (3) steps the OS performs three read operations. But does extraction(remove 3 extra bytes) for getting the one byte while it perform the step(1) since it's read 4 bytes and same for step(2) but for step(3) it does single read operation and there was no need to any addition computation in extraction. And may be the extraction is not that much expensive for the OS, that why it's assigned 2-2 bytes for ch and ch1, instead of giving them 4-4 bytes.

Please correct me if my understanding/observation lack somethings.

Thanks.