Friday, April 18, 2008

Memory, reallocation

그렇다. realloc()으로 할당된 메모리 공간을 조절한다.

void *realloc(void *ptr, size_t size);

리턴되는 포인터는 원래의 것과 다를 수 있다(더 큰 메모리 공간을 연속적으로 얻기 위해 원래 위치에서 다른 위치로 옮길 수 있기 때문이다. 이 때 복사 cost가 있다). size 가 0인 경우 free와 같으나 이렇게 변태적으로 사용할 사람은 없을 거 같다.

realloc()을 통해 사이즈를 더 줄일 수도 있는데, 이때 원래 ptr도 사용가능하다 (심리적으로는 이렇게 안 쓰기 마련이다.) 만약 realloc이 실패하면 원해 ptr는 유효하게 된다.

No comments:

Post a Comment