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가 실패한 작업을 초래할 때마다 다음을 반환합니다. 널 포인터, 이전 데이터도 해제됩니다.