Per quel che vedo, sei già fortunato (o sfortunato a seconda dei punti di vista) a non avere errori di accesso.
Crei un singolo char si cui passi il puntatore ad [/b]appartiene[/b]. Quest'ultima lo inoltra a h dove ne fai una strlen() che non si sa dove finisce; infine usi il valore di quella strlen() come indice per accedere a un array. Non contento usi lo stesso puntatore come fosse un array di char.
Ma questa istruzione:
codice:
char *k = new char;
crea un solo char non una sequenza di char.
Domanda: ma è così brutto usare std::string?