Теперь вы получите серию утечек, поскольку буквы j не сохраняются для последующих бесплатных. j не обязательно получит случайный адрес, но, вероятно, просто как последовательность по сравнению с предыдущими распределениями j.
Если вы освободите j в конце цикла, вы можете получить то же поведение, что и раньше, в зависимости от реализации malloc и free.
Редактировать: вы можете перепроверить напечатанные значения с помощью этого кода.