변수에 할당된 메모리 확인?
글쓴이: ar / 작성시간: 목, 2003/10/09 - 6:14오후
#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가 참조하는
힙 영역에 할당된 메모리 크기를 확인하는 소스 코드는
없을까요? 디버거를 사용해야지만 하는건가요?
Forums:
네, 맞습니다.동적할당된 크기는 라이브러리 제작자만이 압니다. 이
네, 맞습니다.
동적할당된 크기는 라이브러리 제작자만이 압니다. 이걸 알려고 하시면 다칩니다... :lol: 디버깅용으로 레퍼를 씌워서 어떻게 할 수는 있겠지만...
C 에서는 동적할당에 주어진 크기를 나중에 사용하려면 알아서 잘 보관하고 있어야 하고, C++ 라면 std::vector 라는 훌륭한 컨테이너가 있으니 크기나 해제 걱정없이 편히 살 수 있습니다.
그럼, 이만...
답변 감사드립니다. ^^*질문에 답변을 올리시는 모든 kldp인 분들
답변 감사드립니다. ^^*
질문에 답변을 올리시는 모든 kldp인 분들께
감사드립니다. ^^*
댓글 달기