Я работаю над проектом C ++, который предполагает использование lpsolve версии 5.5 для решения многих линейных программ. У меня проблемы с утечками памяти.
Я написал тест-код:
int main(){
for(int i = 0; i < 100; i++){
lprec* lp = make_lp(0, 5000); //0 rows, 5000 columns
set_verbose(lp, IMPORTANT);
solve(lp);
delete(lp);
}
}
Этот код пропускает около 80 миллионов байтов, с ровно 100 ошибками. Есть ли известная утечка в lpsolve или я выполняю очистку неправильно?
Спасибо
Оказывается, это была относительно простая ошибка, вызванная тем, что вы не внимательно читали документы, но я оставлю это здесь на случай, если кто-то еще сочтет это полезным.
Стандарт С ++ delete
будут не свободная память, связанная с lprec. Используйте lpsolve’s delete_lp()
(1) или же free_lp()
(2) вместо.
Других решений пока нет …