questa istruzione
codice:
L->str = malloc(sizeof(char*));
richiede un'area di memoria della dimensione che tu hai specificato.
La signature di questa funzione è questa

codice:
void *malloc(size_t size);
sizeof(char*) ritorna la dimensione di un puntatore, tu chiedi spazio per allocare il puntatore, devi chiedere spazio per allocare la stringa!!!

Infine, il valore di ritorno è un void * che è opportuno tu casti al tuo tipo, onde evitare guai dopo.

Ritorno a consigliarti una revisione sull'argomento "puntatori"