From 57494fee5acfc5c692cd9485bdc107dc31eb8649 Mon Sep 17 00:00:00 2001 From: Dariusz Murakowski Date: Tue, 21 Apr 2015 14:18:09 -0400 Subject: [PATCH] Free memory from species and reaction arrays (to satisfy some valgrind). --- ss.cpp | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/ss.cpp b/ss.cpp index 33d0a29..f1487a6 100644 --- a/ss.cpp +++ b/ss.cpp @@ -72,38 +72,38 @@ void run(RunParameters_SS &r, unsigned seed) { //double mu = 1.0e-1; // initialize virus - VirusSpecies s1("I"); - species.push_back(&s1); + VirusSpecies *s1 = new VirusSpecies("I"); + species.push_back(s1); if (r.importState) { importState(r); // .st for (size_t i=0; ipop[V] = N; + s1->count += N; } } else { - s1.count = r.n; - s1.pop[Virus(H,r.mu)] = s1.count; // default mu = 6.0e-5 + s1->count = r.n; + s1->pop[Virus(H,r.mu)] = s1->count; // default mu = 6.0e-5 } Species_parray print_spec; - print_spec.push_back(&s1); + print_spec.push_back(s1); - if (r.useEpitope) importEpitope(r,species,reactions,&s1,print_spec); // .ep + if (r.useEpitope) importEpitope(r,species,reactions,s1,print_spec); // .ep // V -> V + V' VirusReaction* r1 = new VirusReaction(r.rate_s); // s_k //r1->rate_constant = 1.5; r1->H = H; - r1->V = &s1; + r1->V = s1; reactions.push_back(r1); // V -> 0 VirusDeathReaction* r2 = new VirusDeathReaction(r.rate_u); // u //r2->rate_constant = 0.5; r2->H = H; - r2->V = &s1; + r2->V = s1; reactions.push_back(r2); @@ -113,6 +113,23 @@ void run(RunParameters_SS &r, unsigned seed) { simulate(reactions, species, r.t_end, r.max_steps, r.sample_interval, print_spec); gsl_rng_free(rnd); //Free up memory from random number generator + + // clean up reaction array + for (Rxn_parray::iterator it = reactions.begin(), + end = reactions.end(); + it != end; ++it) { + delete (*it); + } + reactions.clear(); + + // clean up species array + for (Species_parray::iterator it = species.begin(), + end = species.end(); + it != end; ++it) { + delete (*it); + } + species.clear(); + } -- 2.7.4