Le résultat est placé dans le second argument, préalablement alloué avec une dimension suffisante, et renvoyé. Le code client doit désallouer la mémoire.
{ ... char* c = new char[10]; char* d = new char[10]; int N; N = 9999; d = itoc(N, c); printf("\nitoc(%d, c) --> c : '%s'", N, c); printf("\nitoc(%d, c) --> d : '%s'", N, d); N = 1; c = itoc(N, c); printf("\nitoc(%d, c) --> c : '%s'", N, c); delete[] c; //delete[] d; // erreur : 'double free detected' }>> itoc(9999, c) --> c : '9999' itoc(9999, c) --> d : '9999' itoc(1, c) --> c : '1'