sizeof(char*) et les machines 64bit

sizeof(char*) et les machines 64bit

by Viktor Rodondi -
Number of replies: 1

Bonsoir, 

je me demandais pourquoi sur une machine 64bit sizeof(char*) affiche 8.

char* est un pointeur, donc une adresse mémoire entière (int) donc pourquoi sizeof(char*) n'est il pas égal a sizeof(int) ? 

Par ailleurs, sur certaines machines les adresses mémoires vont dans l'ordre décroissant, càd, si j'initialise deux int , pour créer un pointeur vers le second via le premier il me faut faire int* second = &premier-1 ; et non pas +1 comme le voudrais la logique.

Que devons nous retenir pour l'examen ? 

Merci d'avance

In reply to Viktor Rodondi

Re: sizeof(char*) et les machines 64bit

by Ronan Boulic -

les types int et "adresse de quelque chose" sont complètement indépendants.

Il se trouve que pour la génération des machines "32 bits" ces deux types avaient la même taille en mémoire, ce qui entrainait la limitation du nombre d'adresse à 2^32.

Pour la génération des machines 64 bits, la limitation du nombre d'adresse à 2^32 disparait grace aux 8 octets des types des pointeurs = "adresse de quelque chose".

Par contre, la taille des types "numériques" comme int , float et double reste la même sur ces deux générations de machines.