W programowaniu C, kiedy uruchamiamy program, zajmuje on pewną pamięć w systemie. Jeśli używamy pamięci statycznej, musimy przypisać stały blok pamięci z systemu, a następnie po wykonaniu programu mogą się zdarzyć dwa scenariusze; Program będzie wymagał większego rozmiaru bloku niż zadeklarowany rozmiar, albo będzie wymagał mniejszego bloku pamięci. Jeśli blok pamięci staje się mniej dla wykonanego programu, wyniki nie będą precyzyjne, a jeśli rozmiar bloku jest większy dla wykonanego programu, pozostała wolna pamięć bloku jest bez użycia.
Aby tego uniknąć, preferowane jest użycie pamięci dynamicznej w programowaniu C, która ma różne typy funkcji.
Co to jest funkcja Malloc () w programowaniu C
W programowaniu C, jeśli używamy pamięci statycznej, nie możemy zmienić rozmiaru pamięci podczas wykonywania programu. Zalecaną praktyką jest stosowanie pamięci dynamicznej w programowaniu C, aby rozmiar pamięci można było zmienić podczas wykonywania programu.
Aby użyć pamięci dynamicznej, musimy dołączyć plik nagłówka „Stdlib.H", który obejmuje wszystkie funkcje pamięci dynamicznej. Malloc () jest również członkiem stdlib.Biblioteka H i służy do przypisywania pamięci do wykonanego programu. Gdy funkcja Malloc () jest wywoływana w programie, wysyła żądanie do sterty systemu, które albo przypisuje żądany blok pamięci do funkcji Malloc () lub zwróci wartość zerową, jeśli nie ma wystarczającej przestrzeni na sterta.
Malloc () żąda bloku pamięci zgodnie z potrzebą wykonanego programu, a gdy program jest pomyślnie wykonywany, możemy zwrócić blok pamięci do sterty za pomocą funkcji Free (), aby można go było używać do wykonania innych instrukcji.
Ogólna składnia funkcji Malloc () to:
ptr_name = (Cast-Type*) Malloc (rozmiar);Wyjaśnienie powyższej składni jest proste:
Aby uzyskać lepsze zrozumienie, rozważymy przykład, utwórz plik o nazwie MAL_TXT.C i wpisz następujący skrypt:
#włączaćAby skompilować MAL_TXT.plik C, używamy kompilatora GCC:
$ GCC MAL_TXT.C -O MAL_TXTPo pomyślnym skompilowaniu pliku bez żadnego błędu, wykonaj kod za pomocą polecenia:
$ ./MAL_TXTW powyższym kodzie tworzymy tablicę i drukujemy sumę elementów tablicy. Szczegółowe wyjaśnienie powyższego programu to:
Jaka jest funkcja realLoc () w programowaniu C
Inną funkcją pamięci dynamicznej jest funkcja realLoc (), służy do modyfikacji bloku pamięci przypisanej do funkcji Malloc (). Funkcja Malloc (), jak omówiono powyżej, żąda bloku pamięci z sterty, ale aby zmodyfikować rozmiar bloku pamięci, więc użyliśmy funkcji realLoc () zamiast usuwania całego bloku pamięci i ręczne ponowne ponowne składanie nowego bloku pamięci.
Funkcja realLoc () jest krótką formą „realokacji pamięci” i służy do zmiany rozmiaru rozmiaru bloku pamięci przypisanej przez sterę do funkcji Malloc () lub Calloc (). Nie zakłóca oryginalnej zawartości bloku pamięci i żąda nowego bloku pamięci z sterty i kopiuje wszystkie dane ze starego bloku pamięci do nowego bloku pamięci bez zakłócania żadnej zawartości.
Ogólna składnia korzystania z funkcji realLoc () to:
$ ptr = realLoc (ptr, newSize);Wyjaśnienie powyższej składni to:
Ponownie utworzymy plik, real_file.C, i napisz w nim kod, aby lepiej zrozumieć użycie funkcji RealLoc ():
#włączaćTeraz skompiluj real_file.C Korzystanie z kompilatora GCC:
$ gcc real_file.C -O real_fileJeśli plik jest pomyślnie skompilowany, uruchom program za pomocą polecenia:
$ ./real_fileWyjaśnienie powyższego skryptu to:
Wniosek
W programowaniu C dynamiczna alokacja pamięci jest ręcznym alokacją pamięci zgodnie z wymogiem programu. Funkcje Malloc () i RealLoc () są częścią pamięci dynamicznej; Malloc () jest używany do alokacji pamięci, a realLoc () jest używany do realokacji pamięci. W tym artykule wyjaśniliśmy oba; funkcje Malloc () i realLoc (), jak działają i jaka jest ogólna składnia korzystania z obu z nich. Wreszcie, dla lepszego zrozumienia, wykonaliśmy przykłady obu funkcji.