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 ?
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.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.
bonjour,
j'ai une autre question, j'ai une structure:
je veux liberer la memoire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager