'realloc'에 해당되는 글 1건

  1. 2008/07/22 할당된 메모리 영역의 크기를 동적으로 키우는 방법
STUDY/전공2008/07/22 04:27

malloc 을 이용하여 동적 메모리 할당이 가능.

동적으로 할당한 메모리를 다시 동적으로 추가 하고 싶을경우에는 어떻게해야하는가

realloc 이라는 함수를 이용하면 할당된 메모리의 포인터주소로부터 새로 계산된 size 만큼

영역을 재할당 하면서 이전의 값들을 유지해준다.

동적으로 사이즈가 커지는 버퍼나 캐쉬를 만들때 사용하면 유용하다.

 if ( cache == NULL)
      cache = (TupleCache)malloc(dupleCacheSize * sizeof(Tuple));
   else      
     cache = realloc( cache , newDupleCacheSize * sizeof(Tuple) );
주의할점은 realloc 을 통해서 할당된 영역에 대한 포인터 주소를 반드시 갱신해야한다.

cache = realloc (...) 대신 realloc (... ) 을 사용하게 되면 할당된 메모리 영역의 주소가 변경되는 순간

프로그램에서 Segmentation Fault 를 볼수 있다.
Posted by 영고니짱