Funkcja realloc () w bibliotece C: Jak używać? Ucz się na przykładzie

Spisie treści:

Anonim

Co to jest realloc ()?

realloc () jest funkcją biblioteki C służącą do dodawania większej ilości pamięci do już przydzielonych bloków pamięci. Celem ponownego przydzielenia w C jest rozszerzenie bieżących bloków pamięci, pozostawiając oryginalną zawartość 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 funkcji wskaźnik wróci 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 realokacji w C skopiuje wszystkie poprzednie dane z nowego regionu. Daje pewność, że dane pozostaną bezpieczne.

Na przykład:

#include 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 sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;} 

Jak używać realloc ()

Poniższy program w C demonstruje, jak używać funkcji realloc w C do ponownego przydzielania pamięci.

#include #include 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 ponownego przydzielenia w przykładzie C:

Memory created successfully

Za każdym razem, gdy ponowne przydzielenie powoduje niepowodzenie operacji, zwraca wskaźnik o wartości null, a poprzednie dane również są zwalniane.