Taurre �crivit :
>> J'ai reverifie ma norme, la comparaison entre pointeurs non correles est bien
>> une "undefined behavior".
>> Il peut donc se passer relativement n'importe quoi dans le cadre du C standard.
>
> C'est en effet ce qui me perturbe. Que la m�moire soit ou non
> segment�e, les pointeurs restent des entiers,
... mais il n'est pas garanti par la norme que les entiers (math) en
question soient manipulables en tant qu'entiers C. Exemple le plus
�vident : un compilateur C90 pour l'architecture 64 bits de Microsoft:
long est un type 32 bits, et les pointeurs sont sur 64 bits...
Autre exemple : le langage d�finit le type ptrdiff_t pour traiter les
diff�rence entre pointeurs (sous-entendu � corr�l�s �). Sur les
architectures mixtes 32/64 (genre x86-64), il est parfaitement l�gitime
d'utiliser un type sur 32 bits pour ce faire, si le compilateur suppose
par ailleurs que le programme ne va consid�rer qu'un espace m�moire
limit� � 31 ou 32 bits (cas par exemple du mod�le "x32") ; et
�videmment, une comparaison entre deux pointeurs � non corr�l�s � peut
faire exploser les compteurs.
Par ailleurs, l'affirmation � les pointeurs sont des entiers � me g�ne
aux entournures. M�me si je sais bien que ces temps-ci, �tout le monde�
travaille avec des architectures lin�aires. En effet, ce genre
d'affirmation suppose (indument) que les repr�sentations des pointeurs
partagent *toutes* les propri�t�s des entiers (des ordinateurs,
c'est-�-dire un intervalle en terme math�matique). Et ce n'est en
pratique pas le cas : certaines valeurs ne repr�sentent pas des
pointeurs valables, d'autres valeurs sont magiques, parfois des
diff�rences entre deux valeurs peuvent avoir un sens (comme entre deux
pointeurs vers le m�me objet), parfois pas (comme par exemple entre deux
d�clarations adjacentes de deux pointeurs, qui sont al�atoires, au sens
d'une variable al�atoire), etc.
> les comparer ne doit donc pas poser de probl�me.
Cf. supra pour d'�ventuels probl�mes.
Par ailleurs, quel est l'int�r�t de faire une op�ration n'ayant pas de
signification ? Juste pour pousser la norme dans ses retranchements ?
Antoine