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));