ho provato con il seguente test:
codice:
#include <stdio.h>
#include <stdlib.h>
double FUNZIONE(int n, float *x, float *y, float pt)
{
double *S,*B,*H,*G,val;
int intervallo;
B=(double *)malloc(n*sizeof(double));
H=(double *)malloc(n*sizeof(double));
S=(double *)malloc(4*sizeof(double));
G=(double *)malloc(n*sizeof(double));
//Coeff_F(n,x,H,B);
//Coeff_G(n,y,H,G);
G[0] = 0.0;
G[n] = 0.0;
//Gauss(n,H,B,G);
//BackSub(n,H,B,G);
//intervallo=Ric_Bin(n,pt,x);
//Coeff_Spline(intervallo,S,y,H,G);
//val=Horner_Spline(x[intervallo],pt,S);
free(S);
free(B);
free(H);
free(G);
return val;
}
int main()
{
int n=2, quit;
float *X, *Y, pt;
double valutazione;
X=(float *)malloc(n*sizeof(float));
Y=(float *)malloc(n*sizeof(float));
do
{
printf("\nInserire pt: ");
scanf("%lf",&pt);
valutazione=FUNZIONE(n,X,Y,pt);
printf("Il valore di S(pt) e':\n%.2lf\n",valutazione);
printf("\nValutare S in un altro punto? (si=1/no=0) ");
scanf ("%d",&quit);
} while(quit!=0);
free(X);
free(Y);
system("pause");
return 0;
}
Nel seguente modo si verificano 0 errori di allocazione... anche se ovv. il risultato sarà nullo.