关于struct的有关问题

关于struct的问题
union   u{
  int   a[4];
  char   b;
  double   c;
};
struct   s{
  int   a;
  u   b;
};
void   main(int   argc,   char   *argv[])
{
  cout   < <   sizeof(s)   < <   endl;
}
我在vc,gcc+cygwin+eclipse都是输出24?
还有为什么一个空的struct{}大小是1?
vc调试出来这个地址是CD,不知是什么?难道是c++的rtti的特性?标识type_info?

------解决方案--------------------
google 对齐
空的struct{}大小是(至少)1,C++规定,为了保证每个对象都有独一无二的地址。
------解决方案--------------------
从你的回复看,你是听说对齐而不是知道。
union是16,它的对齐大小是多少?VC的默认对齐大小又是多少?