C language: nested dynamic list (nested struct, union)