변수에 할당된 메모리 확인?

ar의 이미지

#include <stdio.h>
#include <stdlib.h>


int main()
{
  char  *p;

  printf("sizeof(p) => %d\n", sizeof(p));
  p = (char *) malloc(sizeof(char)*100);
  printf("sizeof(p) => %d\n", sizeof(p));

  return 0;
}

./a.out
sizeof(p) => 4
sizeof(p) => 4

스택에 존재하던 4b 크기의 포인터 변수 p가
sizeof(char)*100 크기로 할당된 힙 영역의 위치를
참조하기 때문에 p에게 할당된 메모리는 4b로
출력되는 것인가요? 둘째로 제 가정이 옳다면 p가 참조하는
힙 영역에 할당된 메모리 크기를 확인하는 소스 코드는
없을까요? 디버거를 사용해야지만 하는건가요?

bugiii의 이미지

네, 맞습니다.

동적할당된 크기는 라이브러리 제작자만이 압니다. 이걸 알려고 하시면 다칩니다... :lol: 디버깅용으로 레퍼를 씌워서 어떻게 할 수는 있겠지만...

C 에서는 동적할당에 주어진 크기를 나중에 사용하려면 알아서 잘 보관하고 있어야 하고, C++ 라면 std::vector 라는 훌륭한 컨테이너가 있으니 크기나 해제 걱정없이 편히 살 수 있습니다.

그럼, 이만...

ar의 이미지

답변 감사드립니다. ^^*
질문에 답변을 올리시는 모든 kldp인 분들께
감사드립니다. ^^*