• # xmalloc

    Posté par (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 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 :

    void *xmalloc(size_t size)
    {
     void *ptr = malloc(size);
     if (ptr == NULL)
     err(1, "malloc");
     return ptr;
    }

    AI is a mental disorder