Skip to content

Commit 450eb08

Browse files
fix: plug memory leaks in haploid_highd destructor
The free_mem() function was not releasing several allocated arrays, causing significant memory leaks during evolution simulations with CROSSOVERS recombination model. Fixed by adding deletion of: - genome array (auxiliary array for crossover points) - crossovers array (crossover points storage) - trait_stat array (trait statistics) - trait_covariance matrix (2D array) - trait_weights array - gsl_rng generator (via gsl_rng_free) This reduces memory growth during evolution, though further investigation is needed for remaining accumulation during evolve(). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent fff0d9c commit 450eb08

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/haploid_highd.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,18 @@ int haploid_highd::free_mem() {
187187
cerr <<"haploid_highd::free_mem(): No memory allocated!\n";
188188
return HP_BADARG;
189189
} else {
190+
delete [] genome;
191+
delete [] crossovers;
190192
delete [] allele_frequencies;
191193
delete [] gamete_allele_frequencies;
192194
delete [] trait;
195+
delete [] trait_stat;
196+
for (int t = 0; t < number_of_traits; t++){
197+
delete [] trait_covariance[t];
198+
}
199+
delete [] trait_covariance;
200+
delete [] trait_weights;
201+
gsl_rng_free(evo_generator);
193202
mem = false;
194203
return 0;
195204
}

0 commit comments

Comments
 (0)