zizofredj
Messages postés8Date d'inscriptionjeudi 10 mai 2007StatutMembreDernière intervention20 avril 2009
-
14 mai 2008 à 15:44
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
15 mai 2008 à 18:26
Je suis entrain de travailler dans mon projet de thèse et j'éprouve une difficulté énorme quant à la libération de la mémoire de certaines matrices ce qui provoque un arrêt du programme ou au moins un ralentissement du système.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
Comment faire pour libérer la mémoire d'une matrice de structures contenant des listes chainées, d'autres matrices, des entiers ...
zizofredj
Messages postés8Date d'inscriptionjeudi 10 mai 2007StatutMembreDernière intervention20 avril 2009 15 mai 2008 à 09:52
cela suppose que je débute par les listes chainées, les autres matrices .. incluses dans la structure et puis devrai je terminer par la structure principale!!. Bref, y a t il une stratégie générale que je peux adopter, merci
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 15 mai 2008 à 09:59
Dans ce genre de cas, la startégie c'est de libérer en premier les éléments alloués en dernier.
Après dans certains cas tu pourras factoriser certaines désallocation.
Pour une liste chainée il faut par contre libérer les éléments un à un car l'emplacement mémoire n'est pas contigue.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 15 mai 2008 à 18:26
C'est l'intéret du C++ d'avoir introduit la notion de desctructeur. Ca évite ce genre de problème. A défaut, faut seulement que tu fasses des fonctions qui s'occupent de nettoyer une liste chaine, une autre qui s'occupe de nettoyer une marice.
La fonction de nettoyage d'une liste, s'occupera d'appeler celle qui nettoye les matrices. Ya pas vraiment de difficulté. Suffit de libérer le conteneur principal en premier. Et si tes fonctions de nettoyage sont correctes, tous se libèrera automatiquement.