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 : Sélectionner tout - Visualiser dans une fenêtre à part
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. */ }
Partager