Scusa, ma perchè non usi la classe string che è standard invece di quella struttura?? Inoltre, per deallocare un array, devi usare delete[] p; non delete p, con quest'ultimo deallochi solo il primo elemento.