Funkcja realloc() w bibliotece C: jak używać? Składnia i przykład
Co to jest realloc()?
realloc() to funkcja biblioteki C służąca do dodawania większej ilości pamięci do już przydzielonych bloków pamięci. Celem realloc w C jest rozszerzenie bieżących bloków pamięci przy pozostawieniu oryginalnej zawartości bez zmian. Funkcja realloc() pomaga zmniejszyć rozmiar wcześniej przydzielonej pamięci przez funkcje malloc lub calloc. realloc oznacza realokację pamięci.
Składnia realloc w C
ptr = realloc (ptr,newsize);
Powyższa instrukcja przydziela nową przestrzeń pamięci o określonym rozmiarze w zmiennej newsize. Po wykonaniu funkcjonować, wskaźnik zostanie zwrócony do pierwszego bajtu bloku pamięci. Nowy rozmiar może być większy lub mniejszy niż poprzednia pamięć. Nie możemy być pewni, czy nowo przydzielony blok będzie wskazywał tę samą lokalizację, co poprzedni blok pamięci. Funkcja realloc w C skopiuje wszystkie poprzednie dane w nowym regionie. Daje pewność, że dane pozostaną bezpieczne.
Na przykład:
#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; }
Jak korzystać z realloc()
Poniższy program w C demonstruje, jak używać realloc w C do ponownego przydzielania pamięci.
#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; }
Wynik realloc w przykładzie C:
Memory created successfully
Za każdym razem, gdy realokacja zakończy się niepowodzeniem, zwraca wskaźnik zerowy, a poprzednie dane również zostaną zwolnione.