Как имененить размер двумерного динамического массива?
www.cplusplus.com/reference/cstdlib/realloc
The content of the memory block is preserved up to the lesser of the new and old sizes, even if the block is moved to a new location. If the new size is larger, the value of the newly allocated portion is indeterminate.
Отсюда у Вас и мусор.calloc работает по-другому и зануляет выделенную память.
calloc должен заполнять нулями, это да. Но realloc не обязан заполнять нулями вновь захваченные элементы массива, это надо делать вручную.