se io inizializzo un array (char *tmp[50]) in questo modo:

---
for (int t=0;t<50;t++) tmp[t]=NULL;
---

e poi assegno una stringa a tmp[e] in questo modo

---
tmp[e]=new char[strlen(tok)+1];
strcpy(tmp[e], tok);
---

dite che l'uso della new è superfluo? il programma così funziona, ma magari provoca qualche errore "collaterale".