Como realloc e memcpy funcionam?

Eu tenho duas perguntas.

Fazrealloc() ememcpy() copie as entradas em uma matriz para outra de uma maneira mais rápida do que apenas iterando em cada elementoO(N) ? Se a resposta for afirmativa, qual é a sua complexidade?

Se o tamanho alocado for menor que o tamanho original, serárealloc() copiar as entradas para outro lugar ou simplesmente deixá-las, pois estão diminuindo o tamanho da matriz?