commit d97612754c9ccd7592792a5d1d502b805778b7e2
parent 05258dbecc829de62d39c242d58f70681b15e918
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 1 Feb 2023 17:25:26 +0100
Fixe les fuites mémoires de la fonction de calcul Noweb
Diffstat:
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw
@@ -393,8 +393,6 @@ exit:
<<nettoyer les données locales de la fonction>>
<<renvoyer le poids>>
return res;
-error:
- goto exit;
}
@
@@ -1018,6 +1016,7 @@ compute_sensitivity_translation(struct sgs* sgs)
<<afficher les résultats de l'estimation>>
exit:
+ <<libérer les variables locales au calcul de sensibilité>>
return res;
error:
goto exit;
@@ -1088,7 +1087,8 @@ sgs_log(sgs, "Luminance ~ %g +/- %g\n",
@
\paragraph{} Ne reste plus qu'à déclarer les variables locales utilisées par
-notre fonction de calcul.
+notre fonction de calcul et de libérer en sortie l'espace mémoire allouée
+dynamiquement pour ces variables.
<<variables locales au calcul de sensibilité>>=
/* Système */
@@ -1100,10 +1100,15 @@ struct smc_integrator integrator = SMC_INTEGRATOR_NULL;
struct smc_doubleN_context ctx = SMC_DOUBLEN_CONTEXT_NULL;
/* Résultat de l'estimatation */
-struct smc_estimator = NULL;
+struct smc_estimator* estimator = NULL;
struct smc_estimator_status status = SMC_ESTIMATOR_STATUS_NULL;
@
+<<libérer les variables locales au calcul de sensibilité>>=
+if(estimator) smc_estimator_ref_put(estimator);
+if(smc) smc_device_ref_put(smc);
+@
+
\paragraph{} Le lecteur attentif aura remarqué que l'intégrateur utilise la
fonction [[run_realisation]] et non directement la fonction [[réalisation]]
développée dans ce document (voir [[<<exécuter l'intégration Monte Carlo>>]]).