Bonjour,
Je crée un arbre avec des mallocs. Est ce que je dois liberer toutes les zones memoires que j'ai créées avant de quitter mon programme ? ou elles sont liberées automatiquement quand le programme se termine ?
Version imprimable
Bonjour,
Je crée un arbre avec des mallocs. Est ce que je dois liberer toutes les zones memoires que j'ai créées avant de quitter mon programme ? ou elles sont liberées automatiquement quand le programme se termine ?
Salut
Sur les ordinateurs modernes, c'est fait automatiquement (Linux, Windows...).
Mais je te conseille quand même de le faire pour éviter tout problème.
Nas'
Pour être propre, il faut tout libérer. La libération automatique est une QoI (Quality of Implementation). Elle n'est pas requise par le langage.Citation:
Envoyé par semaj_james
Sans parler des programmes qui tournent 24h/24 7j/7 (embarqué, par exemple, serveurs etc.) et qui doivent impérativement gérer leur mémoire au mieux.
je vous remercie
bonjour,
j'ai une autre question, j'ai une structure:
je veux liberer la memoire:Code:
1
2
3
4
5
6
7
8
9 typedef struct noeud { mat_dyn *matrice; char arc; char signe; //signe de l'arc int ligne; //nombre de ligne de la matrice struct arbre *fils; struct arbre *frere; } *PNOEUD, NOEUD;
est ce que je dois faire free(arbre->matrice) ou la matrice est liberée quend je fais le free(arbre) ?Code:
1
2
3
4
5
6
7
8
9
10
11 void lib_memoire(PNOEUD arbre) { if(arbre !=NULL) { lib_memoire(arbre->fils); lib_memoire(arbre->frere); free(arbre->matrice); free(arbre); } }
En théorie, elle n'est pas libérée: Si tu alloues la matrice et la structure séparément, elles sont libérées séparément.
Si tu alloues le tout d'un bloc par contre (Mais je ne pense pas que ce soit le cas ici), tout sera libéré d'un bloc.
je te remercie