malloc()으로 할당받은 메모리의 크기를 알아내는 방법
초코맛캔디
2023.04.01
int *a = (int*)malloc(sizeof(int)*10);이렇게 하면 a는 10칸의 int형 메모리 공간이 생가게 되잖아요?나중에 프로그램하다
a가 가리키고 있는 메모리의 크기를 알아낼 방법은 없나요???
-
태양
자기 자신이 얼마나 할당하는지 알지 않습니까?
-
예다움
그냥 예상하고 프로그램을 코딩해야 겠군요 ㅠㅠ 답 감사해요
-
봄바람
아 이제야 뭔소린지 알겠네;
컴퓨터는 주소값만 가지고는 그게 얼마만큼 메모리를 가지고 있는지 몰라요.
배열과 포인터를 같게 생각하시면 곤란합니다.
sizeof(배열) 을 하면 배열의 크기가 리턴되지만
sizeof(포인터) 를 하면 무조건 주소 그 자체의 크기인 4바이트가 리턴되지요.
배열은 주소이기도 하면서, 그 배열 메모리 자체를 대표하기도 하니까 배열의 크기가 리턴되지만
포인터는 그렇지 않습니다. -
바라
애초에 질문의 의도를 잘 모르겠는데.;
10칸의 int형 메모리의 공간을 만들고, 그 주소를 a에 할당했는데.
a가 가리키고 있는 건 언제나 그 할당한 10칸의int형 메모리죠.
나중에 free를 하고, 다시 특정 메모리를 할당한다는 소리인가요? -
파란
없군요.... 답 감사합니다
-
이송이
없습니다. 프로그래머가 알고 있어야 합니다.