Mercurial > hg > audiodb
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]; }