calloc으로 *cary 에다가 할당했다가
realloc으로 *reary 으로 할당했다고 했을 때
마지막에 cary랑 reary 둘다 free 해줘야 해요?
책에서는 reary만 free 해주길래 궁금했어요
int main()
{
int *cary, *reary;
if((cary = (int *)calloc(3, sizeof(int))) == NULL)
{
printf("메모리 할당에 문제가 있습니다.\n");
exit(EXIT_FAILURE);
};
if((reary = (int *)realloc(cary, 4*sizeof(int))) == NULL)
{
printf("메모리 할당에 문제가 있습니다.\n");
exit(EXIT_FAILURE);
};
free(cary);
free(reary);
}
https://docs.microsoft.com/ko-kr/cpp/c-runtime-library/reference/realloc?view=msvc-170
여기 예제 참고
고마어요
realloc 에 대해서 꼼꼼히 알아보셈
고마어요
C표준 문서에 이렇게 적혀있음 The realloc function deallocates the old object pointed to by ptr and returns a pointer to a new object that has the size specified by size.
아하 그로묜 calloc으로 만들어진 동적 메모리 할당은 realloc으로 사라졌으니 free(cary)를 굳이 할 필요가 업꾼뇨!
사라진게 아니고 realloc으로 다시 재 할당 해주니까 free 한번만 하면되는거
그러니까 calloc으로 할당된게 realloc으로 재할당 된거니까 free(reary) 한번만 해도 된다는거조?