Il n'est pas nécessaire que le spécificateur de formatage %p
place la sortie à une longueur fixe. Vous ne pouvez donc pas déduire des informations sur la "longueur" en mémoire d'une adresse à partir de la représentation imprimée. Par exemple, si vous faites ceci:
const void *nada = NULL;
printf("NULL is at %p\n", nada);
Vous pourriez bien voir quelque chose comme ceci:
NULL is at 0x0
Bien sûr, cela ne signifie pas que le type void *
occupe par magie seulement 4 bits lorsque les La valeur est NULL
, cela signifie simplement que lorsque la valeur du pointeur a été convertie en chaîne, les zéros en tête ont été omis.
MISE À JOUR: Mis en erreur le code de la question, j'ai supprimé le texte non pertinent.
@PaulR: D'oh, mal lire le code de la question. Merci, et corrigé! – unwind