La implementación en C de strcpy no cambia el valor de la variable [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Cambiar la dirección contenida por el puntero usando la función 5 respuestas

Entonces, estoy tratando de implementar mi propio strcpy para tener una mejor comprensión de cómo funcionan los punteros en C, y hasta ahora estoy perdido. Intenté muchos enfoques diferentes, intenté usar código de la red para basar el mío más tarde, pero incluso esos no funcionarán.

Creo que podría estar llamando a la función de manera incorrecta en el método principal. Estoy pasando un puntero de la variable a la función, para que la función pueda cambiar el valor de la variable y en la llamada a la función, estoy dando la dirección del puntero para que el método pueda obtener los datos correctos. Al menos creo que así es como funciona, por lo que pude entender de todos modos.

Aquí están las funciones y las llamadas a métodos:

Llamada de función:

void my_strcpy( char *dest, const char* src ) {

dest = malloc(sizeof(src));

while ( src != '\0' ) {
  *dest = *src;
  src++;
  dest++;
 }

}

Principal:

int main () {

const char* s = "Hello World";
char* test = 'd';

my_strcpy( &test, &s ); // Suposed to change test form d to Hello World.
printf("Changed String: " );
printf( "%c", test );


return 0;
}

PD: Intenté usar test como una cadena más grande que s para ver si era un problema de asignación de memoria, pero no parece ser así. Cualquier ayuda es muy apreciada ya que he estado atrapado en esto durante horas ...

PD: He examinado la pregunta y los ejemplos de cómo cambiar la variable y puedo hacerlo usando un int simple. Pero no puedo hacerlo cuando uso char *. De ahí el post. Pido disculpas si el problema es el mismo, pero no puedo entender qué estoy haciendo mal aquí. Por favor, ten paciencia conmigo ya que soy un principiante en C.

Respuestas a la pregunta(2)

Su respuesta a la pregunta