How is the memory allocation done for a union?