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
5
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
5
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