• [^] # Re: C'est pourtant simple...

    Posté par . En réponse au message [requete]Test de mémoire sur une machine 64 bits. Évalué à 1.

    De toute façon pour du code portable, on s'en fiche un peu.

    J'approuve.
    On sait que l'on a sizeof(int) <= sizeof(long) <= sizeof(long long),

    Faux. On a "rangeof(int) <= rangeof(long) <= rangeof(long long)"rangeof désigne le domaine de valeurs couverts par le type (et même "rangeof(char) <= rangeof(short) <= rangeof(int)").
    Vicisieusement, la norme C ne spécifie rien sur les tailles des types entiers, si ce n'est que sizeof(char) == 1, et que sizeof(T) doit toujours renvoyer une valeur de type size_t (donc des valeurs entières, et pas 0,5 ou 2,75 par exemple).

    Bon, après, en pratique, il ne doit y avoir qu'une DS9k pour avoir sizeof(int) > sizeof(long). Mais elle en a le droit, merci les bits de bourrage ;)

    et que comme peu d'architectures apprécient les accès non alignés, qu'une variable de type long est forcément alignée à une adresse multiple de sizeof(long). Pas la peine de se coltiner des #define ou des valeurs magiques.

    Idem aussi. Tant qu'on s'amuse avec les pointeurs et sizeof dans les limites de la norme, on s'en fiche de savoir si long est aligné sur 4 ou 8 octets...