How do I get the size of a pointer in C using sizeof
? I want to malloc some memory to store a pointer (not the value being pointed to).
This should do the trick:
sizeof(void*)
char *ptr;
char **ptr2 = malloc(sizeof(ptr));
should be able to achieve your purpose. No matter what the platform is, this code should work.
Given an arbitrary type (I've chosen char
here, but that is for sake of concrete example):
char *p;
You can use either of these expressions:
sizeof(p)
sizeof(char *)
Leading to a malloc()
call such as:
char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
The last version has some benefits in that if the type of ppc
changes, the expression still allocates the correct space.