Как получить размер указателя в C с помощью sizeof
? Я хочу скопировать некоторую память, чтобы сохранить указатель (а не на указанное значение).
Получите размер указателя в C
Ответ 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));
должен быть в состоянии достичь вашей цели. Независимо от того, что такое платформа, этот код должен работать.