C - malloc - conversion invalide de void * en double *

Je veux écrire une fonction qui crée une copie d'un double tableau à l'aide de pointeurs.
C'est mon code pour l'instant:

#include <stdio.h>
#include <stdlib.h>

double* copy (double *array, int size)
{
    double *v=malloc(sizeof(double)*size);
    for (int i=0; i<size; i++)
        *(v+i)=*(array+i);
    return v;
}

int main ()
{
    //double array[];
    int size;
    printf ("size= "); scanf ("%i",&size);
    double *array=malloc(sizeof(double)*size);
    for (int i=0; i<size; i++)
        scanf("%f",&array[i]);
    copy(array,size);
    free(array);
}

J'ai 2 erreurs de compilation que je ne peux pas me débarrasser de. Je reçois

invalid conversion de void* double*

lorsque j'essaie d'allouer de la mémoire avec malloc, mais je ne peux pas comprendre ce que je fais mal.

source d'informationauteur Diana | 2015-05-06