No ... new char vuol dire che riservi lo spazio per 1 carattere e non può andare bene ...

Utilizza

l->name=new char[50];

per riservare 50 caratteri (compreso il terminatore).