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.