# HG changeset patch # User mas01cr # Date 1230116201 0 # Node ID d1771f436ff714cacba264a9f91a411e69605647 # Parent 4fe90fd568fc8d596e27015748b386c5b997c54c 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... diff -r 4fe90fd568fc -r d1771f436ff7 query.cpp --- 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]; }