changeset 174:575f9050ef02

Fix memory leak by calling xtract_free_window()
author Jamie Bullock <jamie@jamiebullock.com>
date Wed, 19 Jun 2013 14:59:58 -0700
parents 1a0907add40c
children 41c02a0e7433
files examples/simpletest/simpletest.c
diffstat 1 files changed, 8 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/examples/simpletest/simpletest.c	Wed Jun 19 17:10:22 2013 +0100
+++ b/examples/simpletest/simpletest.c	Wed Jun 19 14:59:58 2013 -0700
@@ -92,12 +92,12 @@
     double mean = 0.0; 
     double f0 = 0.0;
     double centroid = 0.0;
-    double *spectrum = calloc(BLOCKSIZE, sizeof(double));
-    double *windowed = calloc(BLOCKSIZE, sizeof(double));
-    double *peaks = calloc(BLOCKSIZE, sizeof(double));
-    double *harmonics = calloc(BLOCKSIZE, sizeof(double));
+    double spectrum[BLOCKSIZE] = {0};
+    double windowed[BLOCKSIZE] = {0};
+    double peaks[BLOCKSIZE] = {0};
+    double harmonics[BLOCKSIZE] = {0};
     double *window = NULL;
-    double *mfccs = calloc(MFCC_FREQ_BANDS, sizeof(double));
+    double mfccs[MFCC_FREQ_BANDS] = {0};
     double argd[4] = {0};
     double samplerate = 44100.0;
     int n;
@@ -117,14 +117,16 @@
     /* create the window function */
     window = xtract_init_window(BLOCKSIZE, XTRACT_HANN);
     xtract_windowed(wavetable, BLOCKSIZE, window, windowed);
+    xtract_free_window(window);
 
     /* get the spectrum */
     argd[0] = SAMPLERATE / (double)BLOCKSIZE;
     argd[1] = XTRACT_MAGNITUDE_SPECTRUM;
-    argd[2] = 0.f; /* DC component - we expect this to zero for square wave */
+    argd[2] = 1.f; /* DC component - we expect this to zero for square wave */
     argd[3] = 0.f; /* No Normalisation */
 
     xtract_init_fft(BLOCKSIZE, XTRACT_SPECTRUM);
+    printf("windowed: %p, spectrum: %p\n", (void *)windowed, (void *)spectrum);
     xtract[XTRACT_SPECTRUM](windowed, BLOCKSIZE, &argd[0], spectrum);
 
     xtract[XTRACT_SPECTRAL_CENTROID](spectrum, BLOCKSIZE, NULL, &centroid);
@@ -182,12 +184,6 @@
     }
     free(mel_filters.filters);
 
-    free(spectrum);
-    free(windowed);
-    free(peaks);
-    free(harmonics); 
-    free(mfccs);
-
     return 0;
 
 }