Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어에서 Realloc이란 무엇입니까?

<시간/>

C 라이브러리 메모리 할당 함수 void *realloc(void *ptr, size_t size)는 이전에 malloc 또는 calloc에 ​​대한 호출로 할당되었던 ptr이 가리키는 메모리 블록의 크기를 조정하려고 시도합니다.

메모리 할당 기능

메모리는 아래에 설명된 대로 두 가지 방법으로 할당할 수 있습니다. -

C 언어에서 Realloc이란 무엇입니까?

컴파일 타임에 메모리가 할당되면 실행 중에는 변경할 수 없습니다. 메모리가 부족하거나 낭비되는 문제가 있습니다.

솔루션은 프로그램 실행 중 사용자의 요구 사항에 따라 동적으로 메모리를 생성하는 것입니다.

동적 메모리 관리에 사용되는 표준 라이브러리 함수는 다음과 같습니다. -

  • malloc( )
  • 호출()
  • 실제 할당( )
  • 무료( )

realloc( ) 함수

  • 이미 할당된 메모리를 재할당하는 데 사용됩니다.

  • 할당된 메모리를 줄이거나 늘릴 수 있습니다.

  • 재할당된 메모리의 기본 주소를 가리키는 void 포인터를 반환합니다.

realloc() 함수의 구문은 다음과 같습니다 -

Free void *realloc (pointer, newsize);

예시

다음 예제는 realloc() 함수의 사용법을 보여줍니다.

int *ptr;
ptr = (int * ) malloc (1000);// we can use calloc also
- - -
- - -
- - -
ptr = (int * ) realloc (ptr, 500);
- - -
- - -
ptr = (int * ) realloc (ptr, 1500);

예시

아래는 realloc() 함수를 사용하는 C 프로그램입니다 -

#include<stdio.h>
#include<stdlib.h>
int main(){
   int *ptr, i, num;
   printf("array size is 5\n");
   ptr = (int*)calloc(5, sizeof(int));
   if(ptr==NULL){
      printf("Memory allocation failed");
      exit(1); // exit the program
   }
   for(i = 0; i < 5; i++){
      printf("enter number at %d: ", i);
      scanf("%d", ptr+i);
   }
   printf("\nLet's increase the array size to 7\n ");
   ptr = (int*)realloc(ptr, 7 * sizeof(int));
   if(ptr==NULL){
      printf("Memory allocation failed");
      exit(1); // exit the program
   }
   printf("\n enter 2 more integers\n\n");
   for(i = 5; i < 7; i++){
      printf("Enter element number at %d: ", i);
      scanf("%d", ptr+i);
   }
   printf("\n result array is: \n\n");
   for(i = 0; i < 7; i++){
      printf("%d ", *(ptr+i) );
   }
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

array size is 5
enter number at 0: 23
enter number at 1: 12
enter number at 2: 45
enter number at 3: 67
enter number at 4: 20
Let's increase the array size to 7
enter 2 more integers
Enter element number at 5: 90
Enter element number at 6: 60
result array is:
23 12 45 67 20 90 60