Comment obtenir la taille d'un pointeur en C en utilisant sizeof
? Je veux malloc un peu de mémoire pour stocker un pointeur (pas la valeur pointée).
Étant donné un type arbitraire (j'ai choisi char
ici, mais c'est à titre d'exemple concret):
char *p;
Vous pouvez utiliser l'une de ces expressions:
sizeof(p)
sizeof(char *)
Menant à un appel malloc()
tel que:
char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
La dernière version présente certains avantages en ce que si le type de ppc
change, l'expression alloue toujours l'espace correct.
Cela devrait faire l'affaire:
sizeof(void*)
char *ptr;
char **ptr2 = malloc(sizeof(ptr));
devrait être en mesure d'atteindre votre objectif. Quelle que soit la plateforme, ce code devrait fonctionner.