Attenzione ... quando scrivi
while(*p++); // Posiziono in fondo alla stringa sul terminatore null.
non puoi pensare di trovare il terminatore dato che la stringa non è inizializzata.
Se devi usare lo stesso algoritmo, ti devi posizionare alla fine della stringa in un altro modo, magari indicando nei parametri la lunghezza oppure inizializzando correttamente la stringa in ingresso.
P.S. Ho dato per scontato che la funzione si chiama UInt32ToStr e non IntToStr come fai nel main ...