Pour ma part quand je faisais encore du C, j'écrivais souvent une fonction xmalloc qui faisait un exit() après avoir écrit un message d'erreur.
Évidemment, si malloc ne fonctionne pas, mon message d'erreur a peut-être un risque de ne pas être affiché non plus, car lui aussi a peut-être besoin d'allocation dans la fonction printf. D'ailleurs j'avais vu une fonction dans GCC qui stockait une chaîne fixe et qui faisait appel à write(2) directement pour éviter ce problème.
Comme décrit dans plusieurs commentaires au dessus, cela dépend vraiment du contexte. Je code des applications assez basiques, donc ce n'est pas grave si elles se terminent parce qu'il n'y a plus de mémoire. Du coup je codais ceci :
# xmalloc
Posté par David Demelier (site web personnel) . En réponse au journal Gestion des erreurs d’allocation mémoire en C. Évalué à 4. Dernière modification le 27 octobre 2016 à 11:12.
Pour ma part quand je faisais encore du C, j'écrivais souvent une fonction xmalloc qui faisait un exit() après avoir écrit un message d'erreur.
Évidemment, si
mallocne fonctionne pas, mon message d'erreur a peut-être un risque de ne pas être affiché non plus, car lui aussi a peut-être besoin d'allocation dans la fonctionprintf. D'ailleurs j'avais vu une fonction dans GCC qui stockait une chaîne fixe et qui faisait appel àwrite(2)directement pour éviter ce problème.Comme décrit dans plusieurs commentaires au dessus, cela dépend vraiment du contexte. Je code des applications assez basiques, donc ce n'est pas grave si elles se terminent parce qu'il n'y a plus de mémoire. Du coup je codais ceci :
AI is a mental disorder