void main(void){
Func();
}

void Func(void){
double *d;
d = malloc(沢山);
<中略>
free(d)         ←ここ
}

関数Funcが終わったらポインタdは使えなくなるんですよね?
それでもfree(d)は必要なんですか?