> already added 1 -> malloc(sizeof(strlen(src) + 1));
No, it should just be strlen(src)+1
Taking the sizeof that whole expression just reduces it to sizeof(size_t) or something like it.
> **dest++ = *src++;
Try something like
char *d = *dest;
Then use *d++ = *src++;
What you DON'T want to do is actually move the pointer to your allocated memory.