Символ * будет перераспределен для каждой итерации, да, но он также будет освобожден до следующей итерации, поэтому, по крайней мере, это не приведет к утечке памяти (если вы не используете malloc без free в этом цикле).
В любом случае, вы должны вывести его из цикла for по соображениям производительности (хотя, возможно, компилятор оптимизирует это и не перераспределяет память для указателя, но я бы на это не рассчитывал).