una stringa const literal è allocata nello stack del main
una stringa allocata con malloc si trova nell'heap che è proprio di tutto il processo

ad ogni modo quando usi la malloc usala sempre nella forma classica e non così come hai fatto, ovvero:

puntatore = (tipo*) malloc(numero*sizeof(tipo));