programing 2014. 6. 6. 01:31

calloc realloc 조사

realloc 함수

realloc 함수는 기존에 동적으로 할당받은 메모리의 크기를 변경시켜주는 함수이다.

realloc(void *[이전메모리영역], [새로 할당받을 메모리크기]) 와 같은 형태로 사용하며

성공시 새로운 메모리 영역을 가리키는 포인터를 반환하고, 실패시 NULL포인터를 반환한다.

새로 변경할 메모리의 크기가 변경하기 어려운 경우에는 새로 메모리가 할당되므로, 

이전 메모리의 포인터값이 아닌 realloc에서 반환된 새로운 포인터값을 사용해야한다.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main( void)
{
   char   *ptr;
   char   *tmp;

   tmp = malloc( 10);
   ptr = malloc( 10);

   strcpy( ptr, "forum");

   printf( "realloc() 호출 전 ptr의 값: %x\n", ptr);
   ptr   = realloc( ptr, 50);
   printf( "realloc() 호출 후 ptr의 값: %x\n", ptr);

   strcpy( ptr+strlen( ptr), "falinux");  // 이전 문자열 뒤에 falinux 추가
   printf( "%s\n", ptr);   

   free( ptr);
   
   return 0;
}

 calloc 함수

calloc함수는 malloc과 유사하나 malloc과는 다르게 할당과 동시에 NULL값으로 초기화해준다.

*calloc([배열의 개수], [배열의 크기]) 와 같은 형태로 사용하며

성공시 할당된 메모리의 포인터를 반환하고, 실패시 NULL포인터를 반환한다.

배열갯수*배열크기만큼의 메모리를 할당해준다.

'programing' 카테고리의 다른 글

10-2 C++  (0) 2014.10.02
09/18 c++ 강의  (0) 2014.09.18
c++ 강의 9/11  (0) 2014.09.11
파일 위치 지시자  (0) 2014.06.07
ftell, fseek 함수  (0) 2014.05.31