Quello è l'output di gdb su quel puntatore (ho verificato che fosse vuoto).

Ma la strcpy alla fine della stringa aggiunge uno '\0' anche se c'è già nella stringa da copiare ?
facendo infatti print p3[numero ultimo carattere] c'è \0, per cui non dovrei avere bisogno del +1 nel malloc..