web-dev-qa-db-fra.com

Obtenir la taille du pointeur en C

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).

19
Matt

É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.

31
Jonathan Leffler

Cela devrait faire l'affaire:

sizeof(void*)
12
John Zwinck
char *ptr;
char **ptr2 = malloc(sizeof(ptr));

devrait être en mesure d'atteindre votre objectif. Quelle que soit la plateforme, ce code devrait fonctionner.

1
Gurpreet Singh