C 라이브러리의 realloc() 함수: 사용 방법은 무엇입니까? 구문 및 예

realloc()이란 무엇입니까?

진짜 할당() 이미 할당된 메모리 블록에 더 많은 메모리 크기를 추가하는 C 라이브러리의 기능입니다. C에서 realloc의 목적은 원래 내용을 그대로 유지하면서 현재 메모리 블록을 확장하는 것입니다. realloc() 함수는 malloc이나 calloc 함수를 통해 이전에 할당된 메모리의 크기를 줄이는 데 도움이 됩니다. realloc은 메모리 재할당을 의미합니다.

C의 realloc 구문

ptr = realloc (ptr,newsize);

위의 명령문은 newsize 변수에 지정된 크기의 새 메모리 공간을 할당합니다. 실행한 후 기능, 포인터는 메모리 블록의 첫 번째 바이트로 반환됩니다. 새 크기는 이전 메모리보다 크거나 작을 수 있습니다. 새로 할당된 블록이 이전 메모리 블록과 동일한 위치를 가리킬지 확신할 수 없습니다. C의 realloc 함수는 이전 데이터를 모두 새 영역에 복사합니다. 데이터가 안전하게 유지되도록 보장합니다.

예 :

#include <stdio.h>
int main () {
   char *ptr;
   ptr = (char *) malloc(10);
   strcpy(ptr, "Programming");
   printf(" %s,  Address = %u\n", ptr, ptr);

   ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size
   strcat(ptr, " In 'C'");
   printf(" %s,  Address = %u\n", ptr, ptr);
   free(ptr);
   return 0;
}

realloc()을 사용하는 방법

아래 C 프로그램은 C에서 realloc을 사용하여 메모리를 재할당하는 방법을 보여줍니다.

#include <stdio.h>
#include <stdlib.h>
    int main() {
        int i, * ptr, sum = 0;
        ptr = malloc(100);
        if (ptr == NULL) {
            printf("Error! memory not allocated.");
            exit(0);
        }
        
        ptr = realloc(ptr,500);
    if(ptr != NULL)
           printf("Memory created successfully\n");
           
    return 0;

    }

C 예에서 realloc의 결과:

Memory created successfully

realloc가 실패한 작업을 초래할 때마다 다음을 반환합니다. 널 포인터, 이전 데이터도 해제됩니다.