Matt
Matt

Reputation: 11317

Get size of pointer in C

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

Upvotes: 30

Views: 103148

Answers (3)

Gurpreet Singh
Gurpreet Singh

Reputation: 21

char *ptr;
char **ptr2 = malloc(sizeof(ptr));

should be able to achieve your purpose. No matter what the platform is, this code should work.

Upvotes: 2

Jonathan Leffler
Jonathan Leffler

Reputation: 753475

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.

Upvotes: 47

John Zwinck
John Zwinck

Reputation: 249093

This should do the trick:

sizeof(void*)

Upvotes: 15

Related Questions