Dipende da cosa vuoi creare te...in C non esiste il tipo stringa..per convenzione si considera una stringa un array di caratteri (allocato dinamicamente o staticamente), che contenga il carattere nullo '\0'.
Nelle estensioni del gcc è possibile dichiarare una variabile array specificando al dimensione a runtime, come hai fatto tu nel tuo codice iniziale; se vuoi che tale array sia una stringa nel senso della convenzione sopra detta devi metterci il carattere di fine stringa '\0', quindi l'array deve essere dichiarato con una dimensione pari al numero di caratteri della stringa + 1, errorre che ha fatto anche Ilmalcom che ha scritto:
symbolline = malloc (manysymbol * sizeof(symbol));
che è sbagliato perche non tiene conto del carattere di fine linea che quindi sarà scritto fuori dall'array, mentre bisogna fare:
symbolline = malloc ((manysymbol + 1) * sizeof(symbol));
dove il ' + 1' sta proprio per il carattere di fine stringa.
In generale per creare stringhe dinamicamente devi usare la malloc, perchè le variabili dichiarate staticamente, come gli array, hanno una durata limitata al blocco in cui avviene la dichiarazione.
Comuqnue l'unico errore che avevi fato nel tuo codice iniziale era appunto la mancanza del carattere di fine stringa, per cui la funzione printf non sa dove finisce la stringa e va avanti a stampare caratteri finche non incontra tale carattere in memoria o finche non interviene un errore di memoria, ciao