|
|
|
|
Bonsoir,
J'apprend le C depuis quelques jours, et je me demandais l'utiliter de liberer la mémoire avec free pour les malloc avant de fermer le programme
le system d'exploitation ne le fera pas automatiquement?
à quoi sert le
return EXIT_SUCCESS;dans le main?
exit(EXIT_SUCCESS);ou
exit(EXIT_FAILLURE);?
Liberer la memoire avant de quitter le programme evite les fuites.
|
le system d'exploitation ne le fera pas automatiquement?
|
Merci pour vos réponses,
|
Pour ma part je preconise la suite de return car elle permet une gestion d'erreur ...
|
Répondre à Atropa
|
"free(a) ne mets pas a à 0"
void freePlus(void **ptr){
free(*ptr);
*ptr = NULL;
}
( le nom de la fct est au choix ^^ ) et si tu fais un free d'une variable qui n'est pas passé par un malloc/calloc, free ne fera rien. Ces variables sont a la charge du compilateur qui se charge de liberer ces elements. Sous linux il existe un logiciel du nom de ValGrind qui permet de tracer les fuites memoires ;) loupius a dit quelque chose qui n'est pas indiqué dans le C, un malloc ne met pas forcement le pointeur a NULL, tout depends du syteme en place, il se peut que ton pointeur est une valeur provenant d'un ancien pointeur. Par securité, il est conseillé de mettre a NULL apres l'allocation. (une fonction memset dans la lib string.h est forte utile a ce niveau ... elle rempli tous les champs d'un pointeur avec un element ... il s'agit donc de remplir tous les champs pas NULL (0x00)) la fonction calloc fait un malloc et est censée faire le vide apres. Il reste toujours plus prudent de nettoyer sa place allouée
|
Merci pour vos réponses,
|
Si je comprends bien, à chaque fois que l'on répond à une de tes questions, tu nous en recolles une demi-douzaine ! On est pas sorti de l'auberge ;-))
|