Solitamente la new si chiama prima di qualunque utilizzo della variabile da allocare.
Cmq dipende da come hai dichiarato l'array. Se hai dichiarato
char tmp[50];
la new non ti serve e puoi passare all'inizializzazione e utilizzo dell'array.
Se invece hai usato
char *tmp;
e' necessario l'utilizzo di new per allocare l'array (operazione da eseguire al posto del ciclo di inizializzazione).
Nel tuo esempio pero' non capisco perche' devi ciclare su tutto l'array. Per inizializzarlo a un valore nullo ti basterebbe:
tmp[0] = '\0';
oppure
*tmp = '\0';
Anche perche', da che so io, NULL si usa per i puntatori e non per i char.
![]()