Получите размер указателя в C - программирование
Подтвердить что ты не робот

Получите размер указателя в C

Как получить размер указателя в C с помощью sizeof? Я хочу скопировать некоторую память, чтобы сохранить указатель (а не на указанное значение).

4b9b3361

Ответ 1

Для произвольного типа (здесь я выбрал char, но это для конкретного примера):

char *p;

Вы можете использовать любое из этих выражений:

sizeof(p)
sizeof(char *)

Для вызова malloc(), например:

char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));

Последняя версия имеет некоторые преимущества в том, что если тип ppc изменяется, выражение по-прежнему выделяет правильное пространство.

Ответ 2

Это должно сделать трюк:

sizeof(void*)

Ответ 3

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

должен быть в состоянии достичь вашей цели. Независимо от того, что такое платформа, этот код должен работать.