Possible Duplicate:
Why isn’t sizeof for a struct equal to the sum of sizeof of each member?
Consider the following C code:
#include <stdio.h>    
struct employee
{
  int id;
  char name[30];  
};
int main()
{
  struct employee e1;      
  printf("%d %d %d", sizeof(e1.id), sizeof(e1.name), sizeof(e1));
  return(0);
}
The output is:
4 30 36
Why is the size of the structure not equal to the sum of the sizes of its individual component variables?
                        
The compiler may add padding for alignment requirements. Note that this applies not only to padding between the fields of a struct, but also may apply to the end of the struct (so that arrays of the structure type will have each element properly aligned).
For example:
Even though the
cfield doesn't need padding, the struct will generally have asizeof(struct foo_t) == 8(on a 32-bit system - rather a system with a 32-bitinttype) because there will need to be 3 bytes of padding after thecfield.Note that the padding might not be required by the system (like x86 or Cortex M3) but compilers might still add it for performance reasons.