Free d'une matrice de structures

Résolu
zizofredj Messages postés 8 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 20 avril 2009 - 14 mai 2008 à 15:44
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 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 ...

4 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
14 mai 2008 à 22:40
Faire des free ou delete/delete[] sur ce qui s'impose...
3
zizofredj Messages postés 8 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 20 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
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Derniè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.

Shell
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
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.
0
Rejoignez-nous