请问关于union的有关问题

请教关于union的问题
1.若union包含不同长度的变量,它占用多少内存,是最大的那个吗?
2.假如这样一个结构体:

struct mystruct
{
    char h[5];
    union
    {
       char m[50];
       int i;
       short s; 
    }
    char t[500]
}

定义该结构体的变量x,初始化之前,x占多少内存?
如果初始化时union中选的是int i,会不会动态调整内存大小?
如果初始化时给m[50]赋值,然后又给i赋值,那么应该i的值会覆盖m[50]的值对吧?但是m[50]中前4个字节以后的那部分数据还留着吗?

------解决方案--------------------
1. 是用最大的那个
2. 内存不会动态调整的, 会覆盖, 会留着