• [^] # Re: undefined behaviour

    Posté par (site web personnel) . En réponse au journal Gestion des erreurs d’allocation mémoire en C. Évalué à 3.

    En pratique on peut considérer qu'il ne renvoit jamais null.

    En pratique tu peux avoir l’entrée avec une variable "pas de chance calcul foireux" qui va faire un malloc(0) ou un malloc (-1) ou une taille trop grosse pour la RAM disponible, et tu dis toi-même que ça renvoie null dans ce cas, donc c'est incohérent de dire "en pratique jamais". Tu parle d’exceptionnel pour des cas pas si exceptionnels, des fois avec des simples entrées on peut arriver à faire de grosses demande de RAM (perso un soft par exemple comme FFmpeg me jette car je lui demande de traiter de la 4K en lossless et il essaye d'allouer un peu trop de buffers pour ça, hop "out of memory" merci la gestion autre que "m'en fout").
    Le seul cas où tu pourrais dire "jamais" est si "j'appelle malloc avec une constante dont je sais qu'elle est inférieure à la taille de mémoire maximale disponible pour un process, minoré de toute la mémoire que j'ai déjà consommé" si je comprend bien (et si c'est le cas, c'est vachement différent de "en pratique jamais"). Contre-argument?

    Note que je ne dis pas qu'il faut toujours gérer car ça arriverai tout le temps (par exemple pour un prototype, un dev rapide, peu utilisé, ben ça coûte cher à gérer et pas forcément rentable), mais "en pratique jamais" me parait bien présomptueux.