初歩的な事で申し訳ないのですが……次のソースをコンパイルして実行すると、「セグメンテーション違反」と言われて怒られます。何が悪いのでしょう?

#include <stdio.h>

int double_malloc(double *target, int number) {
if ((target = (double *)malloc(sizeof(double) * number)) == NULL ) {
puts("Memory Unallocatable in dounle_malloc()\n") ;
return (-1) ;
}
return (0) ;
}

int main(void) {

int number ;
double *test ;

number = 2 ;
double_malloc(test, number) ;
test[0] = 1.0 ;
test[1] = 2.0 ;
printf("%f\n", test[0]+test[1]) ;
free(*test) ;
return (0) ;

}

OSはVineLinux3.2、コンパイラはOSについてきたgccを使っています。CPUはPentium4 2.66GHz、総メモリは1Gでコンパイル後も650MB程度の空きがありました。