Liste Chaînée | Question sur malloc/free
Bonjour, savez vous si le exit(EXIT_FAILURE) est une façon propre de finir une fonction quand dans mon cas j'alloue dynamiquement mais que je ne peux pas libérer la mémoire à la fin de cette fonction ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| /**
* Ajoute un time/player/score en fin de Liste
* @param temps, pointeur vers un nombre x(TIME_ARG) d'entiers.
* @param liste La liste.
* @param player, pointeur vers une chaîne de characters à insérer.
* @param score l'entier à insérer.
* @return La liste avec les nouveaux élements ajoutés.
*/
p_list push_back_list(p_list liste, int temps[], char *player, int score) {
t_classements *nouveau_score ; /* nouveau score de type classements. */
nouveau_score = malloc(sizeof(*nouveau_score));
nouveau_score->classement = malloc(sizeof(*nouveau_score->classement));
nouveau_score->classement->temps = malloc(sizeof(*nouveau_score->classement->temps) * TIME_ARG);
unsigned int taille_chaine = strlen(player);
nouveau_score->classement->nom = malloc(sizeof(*nouveau_score->classement->nom) * taille_chaine);
if(nouveau_score == NULL || nouveau_score->classement == NULL || nouveau_score->classement->nom == NULL){
fprintf(stderr, "Erreur : probleme allocation dynamique.\n");
exit(EXIT_FAILURE);
}
strcpy(nouveau_score->classement->nom, player);
nouveau_score->classement->temps = temps;
nouveau_score->classement->score = score;
(*nouveau_score).next = NULL ; /* initialiser l'élément suivant à NULL */
if(is_empty_list(liste)){
return nouveau_score;
}
t_classements *temp;
temp = liste;
while(temp->next != NULL) {
temp = temp->next;
}
temp->next = nouveau_score;
return liste; /* retourne l'adresse du nouveau_score. */
} |