• [^] # Re: Petites precisions

    Posté par . En réponse au journal J'adore Linus. Évalué à 0.

    Pour le compilateur, l'adresse 0 (ou "(void *)0") est une adresse comme une autre.
    Si tu veux exécuter une fonction à cette adresse, le compilateur n'aura rien à dire.
    Si tu veux déférencer un pointeur pour lire ce qu'il y a à l'adresse 0, le compilateur te laisse totalement libre de le faire aussi.

    Par contre le noyau fera planter le programme vite fait. Mais pas le compilateur.

    btw, la norme du C ne dis pas que 0 ou "(void *)0" est un pointeur invalide. La norme C ("#include <stdlib.h>") dit uniquement que NULL est un pointeur invalide et cette norme ne donne pas la valeur de NULL (ce qui est normal puisque c'est invalide).