Fixed some memory leaks.
parent
03c10f5141
commit
14f3386b0a
6
dsmin.c
6
dsmin.c
|
@ -16,9 +16,6 @@ int dsmin(double **p,double *y,int n,double ftol,double (*func)(double *))
|
||||||
double *vector_sum(double **,int);
|
double *vector_sum(double **,int);
|
||||||
double dsmod(double **,double *,double *,int,double (*func)(double *),int,double);
|
double dsmod(double **,double *,double *,int,double (*func)(double *),int,double);
|
||||||
|
|
||||||
// Allocate memory
|
|
||||||
psum=(double *) malloc(sizeof(double) * n);
|
|
||||||
|
|
||||||
// Get function values
|
// Get function values
|
||||||
for (i=0;i<=n;i++)
|
for (i=0;i<=n;i++)
|
||||||
y[i]=func(p[i]);
|
y[i]=func(p[i]);
|
||||||
|
@ -69,7 +66,8 @@ int dsmin(double **p,double *y,int n,double ftol,double (*func)(double *))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nfunk+=n;
|
nfunk+=n;
|
||||||
|
|
||||||
|
free(psum);
|
||||||
psum=vector_sum(p,n);
|
psum=vector_sum(p,n);
|
||||||
}
|
}
|
||||||
} else --nfunk;
|
} else --nfunk;
|
||||||
|
|
2
rffft.c
2
rffft.c
|
@ -344,6 +344,8 @@ int main(int argc,char *argv[])
|
||||||
|
|
||||||
// Deallocate
|
// Deallocate
|
||||||
free(ibuf);
|
free(ibuf);
|
||||||
|
free(cbuf);
|
||||||
|
free(fbuf);
|
||||||
fftwf_free(c);
|
fftwf_free(c);
|
||||||
fftwf_free(d);
|
fftwf_free(d);
|
||||||
free(z);
|
free(z);
|
||||||
|
|
13
rffind.c
13
rffind.c
|
@ -210,6 +210,9 @@ int main(int argc,char *argv[])
|
||||||
|
|
||||||
// Filter
|
// Filter
|
||||||
filter(s,site_id,sigma,filename,graves);
|
filter(s,site_id,sigma,filename,graves);
|
||||||
|
|
||||||
|
// Free
|
||||||
|
free_spectrogram(s);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Read data
|
// Read data
|
||||||
|
@ -222,14 +225,10 @@ int main(int argc,char *argv[])
|
||||||
// Filter
|
// Filter
|
||||||
filter(s,site_id,sigma,filename,graves);
|
filter(s,site_id,sigma,filename,graves);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Free
|
// Free
|
||||||
free(s.z);
|
free_spectrogram(s);
|
||||||
free(s.mjd);
|
}
|
||||||
// free(s.zavg);
|
|
||||||
// free(s.zstd);
|
|
||||||
// free(s.length);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
9
rfio.c
9
rfio.c
|
@ -238,3 +238,12 @@ void write_spectrogram(struct spectrogram s,char *prefix)
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void free_spectrogram(struct spectrogram s)
|
||||||
|
{
|
||||||
|
free(s.z);
|
||||||
|
free(s.zavg);
|
||||||
|
free(s.zstd);
|
||||||
|
free(s.mjd);
|
||||||
|
free(s.length);
|
||||||
|
}
|
||||||
|
|
1
rfio.h
1
rfio.h
|
@ -9,3 +9,4 @@ struct spectrogram {
|
||||||
};
|
};
|
||||||
struct spectrogram read_spectrogram(char *prefix,int isub,int nsub,double f0,double df0,int nbin,double foff);
|
struct spectrogram read_spectrogram(char *prefix,int isub,int nsub,double f0,double df0,int nbin,double foff);
|
||||||
void write_spectrogram(struct spectrogram s,char *prefix);
|
void write_spectrogram(struct spectrogram s,char *prefix);
|
||||||
|
void free_spectrogram(struct spectrogram s);
|
||||||
|
|
1
rfplot.c
1
rfplot.c
|
@ -722,6 +722,7 @@ int main(int argc,char *argv[])
|
||||||
free(s.zavg);
|
free(s.zavg);
|
||||||
free(s.zstd);
|
free(s.zstd);
|
||||||
free(s.mjd);
|
free(s.mjd);
|
||||||
|
free(s.length);
|
||||||
if (tf.n>0) {
|
if (tf.n>0) {
|
||||||
free(tf.mjd);
|
free(tf.mjd);
|
||||||
free(tf.freq);
|
free(tf.freq);
|
||||||
|
|
3
rfpng.c
3
rfpng.c
|
@ -254,9 +254,6 @@ int main(int argc,char *argv[])
|
||||||
free(t[i].freq);
|
free(t[i].freq);
|
||||||
free(t[i].za);
|
free(t[i].za);
|
||||||
}
|
}
|
||||||
// free(tf.mjd);
|
|
||||||
// free(tf.freq);
|
|
||||||
// free(tf.za);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
10
simplex.c
10
simplex.c
|
@ -26,3 +26,13 @@ double **simplex(int n,double *a,double *da)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void simplex_free(double **p,int n)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(p==NULL)
|
||||||
|
return;
|
||||||
|
for(i=0;i<=n;i++)
|
||||||
|
free(p[i]);
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
|
15
versafit.c
15
versafit.c
|
@ -9,6 +9,7 @@ int ERRCOMP=0; // Set reduced Chi-Squared to unity (1 = yes; 0 = no)
|
||||||
|
|
||||||
int dsmin(double **,double *,int,double,double (*func)(double *));
|
int dsmin(double **,double *,int,double,double (*func)(double *));
|
||||||
double **simplex(int,double *,double *);
|
double **simplex(int,double *,double *);
|
||||||
|
void simplex_free(double **,int);
|
||||||
double parabolic_root(double,double,double,double);
|
double parabolic_root(double,double,double,double);
|
||||||
|
|
||||||
// Versafit fitting routine
|
// Versafit fitting routine
|
||||||
|
@ -51,6 +52,8 @@ void versafit(int m,int n,double *a,double *da,double (*func)(double *),double d
|
||||||
a[i]/=(double) (n+1);
|
a[i]/=(double) (n+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
simplex_free(p,n);
|
||||||
|
|
||||||
// Compute minimum
|
// Compute minimum
|
||||||
chisqmin=func(a);
|
chisqmin=func(a);
|
||||||
|
|
||||||
|
@ -109,6 +112,8 @@ void versafit(int m,int n,double *a,double *da,double (*func)(double *),double d
|
||||||
}
|
}
|
||||||
d[0]=parabolic_root(d[0],func(b),chisqmin,dchisq);
|
d[0]=parabolic_root(d[0],func(b),chisqmin,dchisq);
|
||||||
|
|
||||||
|
simplex_free(p,n);
|
||||||
|
|
||||||
if (fabs(chisqmin+dchisq-func(b))<tol) break;
|
if (fabs(chisqmin+dchisq-func(b))<tol) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +136,8 @@ void versafit(int m,int n,double *a,double *da,double (*func)(double *),double d
|
||||||
}
|
}
|
||||||
d[1]=parabolic_root(d[1],func(b),chisqmin,dchisq);
|
d[1]=parabolic_root(d[1],func(b),chisqmin,dchisq);
|
||||||
|
|
||||||
|
simplex_free(p,n);
|
||||||
|
|
||||||
if (fabs(chisqmin+dchisq-func(b))<tol) break;
|
if (fabs(chisqmin+dchisq-func(b))<tol) break;
|
||||||
}
|
}
|
||||||
da[i]=0.5*(fabs(d[0])+fabs(d[1]));
|
da[i]=0.5*(fabs(d[0])+fabs(d[1]));
|
||||||
|
@ -138,16 +145,16 @@ void versafit(int m,int n,double *a,double *da,double (*func)(double *),double d
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(b);
|
||||||
|
free(db);
|
||||||
|
|
||||||
if (OUTPUT)
|
if (OUTPUT)
|
||||||
for (i=0;i<n;i++)
|
for (i=0;i<n;i++)
|
||||||
printf(" a(%i): %12.5f +- %9.5f\n",i+1,a[i],da[i]);
|
printf(" a(%i): %12.5f +- %9.5f\n",i+1,a[i],da[i]);
|
||||||
}
|
}
|
||||||
if (OUTPUT) printf("\nTotal number of iterations: %i\n",nfunk);
|
if (OUTPUT) printf("\nTotal number of iterations: %i\n",nfunk);
|
||||||
|
|
||||||
// free(p);
|
free(y);
|
||||||
// free(y);
|
|
||||||
// free(b);
|
|
||||||
// free(db);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue