@Thierry Chapuis: ta réponse ne me convient pas car elle ne libère la memoire de string1 dans le cas d'une erreur dans l'allocation de string2. Donc je pense que tu as oublie un
free(string1), string1 = NULL;
avant le premier
1 2
| fprintf(stderr,"malloc failed in file:%s line : %s",__FILE__,__LINE__);
exit(EXIT_FAILURE); |
Et en réalité cette solution ne me convient pas car j'utilise les macros définis ici. Donc je ne peux pas y insérer la libération de string1 par exemple.
@Emmanuel Delahaye: Je ne sais pas ce que fait exit(). Mais c'est un linux embarqué, donc je pense que c'est la même chose qu'un linux normal. De plus, je comprend parfaitement le problème du exit. Je vais donc le changer par un return ce qui me permet de remonter l'erreur comme me l'a sugéré Thierry Chapuis. De plus, mon programme n'est pas fait pour tourner en permanence (en tout cas pas pour le moment). Enfin, mon problème de gestion n'apparaît qu'à la fermeture du programme. Donc si un exit() ou un return() libère la mémoire plus de problème. Mais nicolas.sitbon n'a pas l'air d'être d'accord avec ce point!
Partager