realloc 에 대해 질문있습니다
글쓴이: impactlife / 작성시간: 수, 2013/07/24 - 12:38오후
c언어 공부중인 초보입니다.
함수안에서 realloc 할때 아래와 같이 하고 있는데 이렇게 하는게 맞는지 좀 봐주십시오.
뭔가 아리까리해서요...
int main(){
int *ptr;
ptr = (int *)malloc(500);
test(&ptr);
free(ptr);
}
void test(int **ptr){
*ptr = (int *)realloc(1000);
}
최초 malloc 으로 잡을때 메모리영역이 500이었는데
함수안에서 realloc 으로 다시 1000으로 잡으려고 할때 해당 주소에 1000을 확보할 영역이 모자란다면
컴퓨터가 아마도 여유가 있는 다른곳에 메모리를 재할당하고 새로운 주소를 리턴할거 같은데요(맞는건지??)
여기서 의문인게 그럼 500으로 잡았던 메모리는 따로 free를 해주지 않아도 되는건지요?
재할당된 곳에 예전의 데이타를 복사하고 free를 시켜줘야 할거 같은데...
잘 모르겠습니다. 이렇게 하는게 맞는지 가르침 부탁드립니다.
Forums:
http://pubs.opengroup.org/onl
http://pubs.opengroup.org/onlinepubs/009696899/functions/realloc.html
감사합니다.
옮길때 자동으로 free되는가 보네요.
댓글 달기