에서 포인터의 크기를 가져 오기? 포인터를 저장하는 메모리를 malloc하고 싶습니다.내가 <code>sizeof</code>를 사용하여 C에서 포인터의 크기를 얻는 방법 C
답변
임의의 유형을 감안할 때 (내가 여기 char
을 선택했습니다,하지만 그 구체적인 예를 위해서입니다) :
char *p;
당신이 중 하나를 사용할 수 있습니다
sizeof(p)
sizeof(char *)
malloc()
칼에 선도 : 이러한 식의 난 같은 : ppc
변경의 유형, 표현식이 아직 올바른 공간을 할당하는 경우
char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
마지막 버전은 몇 가지 장점이 있습니다.
첫 번째 표현식에서 괄호는 선택 사항입니다. –
@CarlNorum 사실이지만 표현식이 꽤 명확해진 것을 알았습니다. 그것은 스타일의 문제이지 편집해야하는 것이 아닙니다. –
+1은 마지막 버전이 선호됨을 나타냅니다. –
이 트릭을 수행해야합니다
sizeof(void*)
char *ptr;
char **ptr2 = malloc(sizeof(ptr));
은 귀하의 목적을 달성 할 수 있어야합니다. 플랫폼이 무엇이든 관계없이이 코드가 작동해야합니다.
AFAIK는 서로 다른 유형의 포인터는 같은 크기가 보장되지 않습니다. – SLaks
정말요? 예제/소스를 제공 할 수 있습니까? 저는 항상 모든 포인터가 같은 크기를 가지고 있다고 가정했습니다. 왜냐하면 모두 같은 주소 공간 내의 메모리 위치를 참조하기 때문입니다. – Matt
@Matt : 사소한 반례는 함수 포인터입니다. 반드시 같은 주소 공간이 아니어야합니다. 참조 : http://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to-different-types-have-different-siz합니다. –