Il manque un delete res...
gen invmod(const gen & a,const gen & modulo){
[...]
ref_mpz_t * res;
[...]
if (!_ZINTinvmod(a,modulo,res)) <<<<<<<<<<<<<<<< execute un new res
return gentypeerr(gettext("invmod")); <<<<<<<<<<<<<< pas de delete res
return(res); <<<<<<<<< delete res ici, il vaudrait mieux avoir return gen(res);
[...]
return 0;
}
Par ailleurs, dans _ZINTinvmod, il y a des memory leaks potentiels si une exception est envoyée
notamment par new ref_mpz_t...
memory leak dans gen.cc invmod
Modérateur : xcasadmin
Re: memory leak dans gen.cc invmod
Je vais rajouter delete res; et res=0; dans _ZINTinvmod lorsqu'il renvoie false.
Sinon, oui, si new echoue, mais de toutes facons, si new ou malloc echoue ou que ce soit, il n'y a rien qui soit capable de le traiter correctement, il faudrait relire partout.
Sinon, oui, si new echoue, mais de toutes facons, si new ou malloc echoue ou que ce soit, il n'y a rien qui soit capable de le traiter correctement, il faudrait relire partout.