¿Alguna sugerencia mejor para este c funciones copyString, concatString


Me pidieron que hiciera 2 funciones, copyString y concatString, las hice e implementé ambas, pero en la salida que obtuve, me dijeron que se puede hacer mejor, pero nunca se me explicó cómo.
ahora me está matando, ¿qué podría hacer mejor, así que aquí está el código y estaré encantado de escuchar cualquier sugerencia?

void copyString (char **strDst, const char *strSrc)
{
     char *strTmp = NULL;
     int length = strlen (src);
     if (*strDst== NULL) 
     {
        *strDst= malloc (length);   
     }
     else 
     {  
         if (strlen(*strDst) != length)
         {
             strTmp = *strDst;
         }
         *strDst= malloc (length);  
     }
     strcpy (*strDst, strSrc);  
     if (strTmp != NULL)    
         free (strTmp );    
 }

void concatString (char **strDst, const char *cat)
{
     int cat_length = strlen (cat);
     if (cat_length > 0) 
     {  
         *strDst= realloc (*strDst, strlen (*strDst) + cat_length); 
          strcat (*strDst, cat);
     }
}




void main(int argc, char *argv[])
{
    char *str = NULL;
    copyString(&str, "Hello World");
    puts(str);
    copyString(&str,str+6);
    puts(str);
    concatString(&str, " Pesron");
}

La salida debe ser como sigue:
1.Hola mundo
2. mundo
3. Persona del mundo

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta