changeset 445:d1771f436ff7 api-inversion

Better memory discipline Use new rather than malloc()/calloc() for the qpointery bits of memory that audioDB::query_loop ends up calling delete [] on. We're still leaking memory in various places, but at least we're not massively undefined...
author mas01cr
date Wed, 24 Dec 2008 10:56:41 +0000
parents 4fe90fd568fc
children 6ac898b19656
files query.cpp
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/query.cpp	Wed Dec 24 10:56:37 2008 +0000
+++ b/query.cpp	Wed Dec 24 10:56:41 2008 +0000
@@ -430,23 +430,24 @@
   qpointers->nvectors = nvectors;
 
   size_t vector_size = nvectors * sizeof(double) * d.dim;
-  *vector_data = (double *) malloc(vector_size);
+  *vector_data = new double[vector_size];
   memcpy(*vector_data, d.data, vector_size);
 
-  qpointers->l2norm_data = (double *) malloc(vector_size / d.dim);
+  qpointers->l2norm_data = new double[vector_size / d.dim];
   audiodb_l2norm_buffer(*vector_data, d.dim, nvectors, qpointers->l2norm_data);
   audiodb_sequence_sum(qpointers->l2norm_data, nvectors, sequence_length);
   audiodb_sequence_sqrt(qpointers->l2norm_data, nvectors, sequence_length);
 
   if(d.power) {
-    qpointers->power_data = (double *) malloc(vector_size / d.dim);
+    qpointers->power_data = new double[vector_size / d.dim];
     memcpy(qpointers->power_data, d.power, vector_size / d.dim);
     audiodb_sequence_sum(qpointers->power_data, nvectors, sequence_length);
     audiodb_sequence_average(qpointers->power_data, nvectors, sequence_length);
   }
 
   if(d.times) {
-    qpointers->mean_duration = (double *) calloc(1, sizeof(double));
+    qpointers->mean_duration = new double[1];
+    *qpointers->mean_duration = 0;
     for(unsigned int k = 0; k < nvectors; k++) {
       *qpointers->mean_duration += d.times[2*k+1] - d.times[2*k];
     }