Alokacja pamięci w C:
Zasoby są nieustannie dostarczane. Przez cały czas pracowaliśmy nad poprawą wykorzystania zasobów. To było podstawy naszego rozwoju. Przydział pamięci jest pojęciem związanym z tym celem. Aby można było tworzyć rzeczywiste zmienne, pamięć należy przypisać do zbudowanych zmiennych. Istnieje teraz rozróżnienie między tym, jak myślimy. Kiedy myślimy o zrobieniu wszystkiego, myślimy o początku od początku; Jednak gdy komputer tworzy zmienną „x”, bardziej przypomina dystrybucję; System po prostu wybiera komórkę pamięci dla X z szerokiej puli dostępnych komórek pamięci. To jest jak pokój hotelowy przypisany do czyjegoś nazwiska z wielu bezpłatnych lub wolnych wcześniej istniejących pokoi. Ten przykład najprawdopodobniej wyjaśnił, w jaki sposób komputer zarządza alokacją pamięci.
Teraz do typów alokacji pamięci, które są dozwolone w języku programowania C to alokacja pamięci statycznej i dynamiczna alokacja pamięci. Kiedy definiujemy zmienne, ustawiamy wszystkie zmienne, które zostaną użyte, aby kompilator zrozumiał, co robimy, ponieważ używana zmienna jest istotną częścią programu, którego chce użytkownik, a nie symbol Rouge, który unosi się.
Przykład prawdziwy
Kiedy deklarujemy zmienne, kompilator przypisuje je do pustych przestrzeni pamięci, jakby były w hotelu z wcześniej istniejącymi pustymi pokoi, które zostaną przypisane do różnych nazw gościa. Jak widać, odbywa się to przed uruchomieniem programu; Nie możesz użyć tego podejścia do alokacji zmiennych podczas uruchomienia programu. Tutaj wchodzi dynamiczna alokacja pamięci.
Przykład programowania
Weź tablicę jako przykład, ponieważ rozmiar jest wcześniej zadeklarowany, a po zadeklarowaniu nie można dostosować rozmiaru tablicy. Możliwe, że określona tablica nie jest wystarczająco duża. Możesz ręcznie przydzielić pamięć w czasie wykonywania, aby rozwiązać ten problem. Nazywa się to dynamicznym alokacja pamięci. Istnieje kilka funkcji bibliotecznych w języku programowania C, które pomagają nam dynamicznie przydzielić pamięć, które są zdefiniowane w pliku nagłówka „”; Funkcje są następujące:
Składnia funkcji MALLOC
Malloc to skrót alokacji pamięci. Blok pamięci z określoną liczbą bajtów jest zarezerwowany w funkcji Malloc (). Zwraca także wskaźnik pustki, który może zostać przekształcony w dowolny wskaźnik. Składnia funkcji MALLOC w programowaniu C jest napisana poniżej:
#P = (CastType*) Malloc (rozmiar);Gdybyśmy napisali wyrażenie do przydzielania pamięci dla zmiennej całkowitej, wyglądałoby to tak,
p = (int *) Malloc (100 * sizeof (int));Kawałka zapisana powyżej odkłada na bok 400 bajtów przestrzeni pamięci. Powodem tego jest to, że typ danych liczb całkowitych ma rozmiar 4 bajtów. Wskaźnik „P” śledzi początkowy bajt przydzielonej pamięci.
Składnia funkcji Calloc ()
Przylegająca alokacja to skrót terminu „calloc.”W programowaniu C funkcja Calloc () służy do przydzielenia pewnej ilości pamięci, a następnie zresetowania jej do zera. Ten adres pamięci jest zwracany jako wskaźnik pustki, który można następnie przekonwertować na typ niezbędny. Funkcja przyjmuje dwa argumenty, które określają ilość pamięci, która ma być przydzielona jako całość. Składnia funkcji Calloc () w programowaniu C jest napisana poniżej:
p = (castType*) calloc (n, rozmiar);Teraz przyjrzymy się funkcji RealLoc w programowaniu C.
Funkcja realLoc () w C:
Realloc oznacza Reallocation. Metodę realLoc () można wykorzystać do zmiany wielkości wcześniej przydzielonej pamięci, jeśli dynamicznie przydzielona pamięć jest nieodpowiednia lub więcej niż to konieczne. Funkcja realLoc () zwraca wskaźnik do nowego obiektu o rozmiarze dostarczonym według rozmiar. Do mniejszych z dwóch rozmiarów elementy nowego obiektu są podobne do elementów poprzedniego obiektu. Wszelkie bajty w nowym obiekcie, które są większe niż rozmiar starego obiektu, mają niezdefiniowane wartości. RealLoc () powinien być używany tylko do dynamicznie przydzielonej pamięci; to jest warte zanotowania. Zachowanie nie jest znane, czy przestrzeń pamięci nie jest dynamicznie przydzielana.
Składnia funkcji realLoc ()
Składnia funkcji realLoc () w programowaniu C jest napisana poniżej:
# realLoc (ptr, nowy rozmiar);W powyższym wyrażeniu RealLoc jest funkcją, która zmienia rozmiar lokalizacji pamięci wskazanej przez PTR. Tytuł zmiennej wskaźnika, który musi zostać zmieniony, to „PTR”. „Nowy rozmiar” odnosi się do nowego rozmiaru obszaru pamięci. Może być mniejszy lub większy niż obecny rozmiar.
Chociaż wszystkie te funkcje z powodzeniem przydzielono przestrzeń pamięci, nie są jeszcze wolne i musimy je jawnie uwolnić. Tutaj wymagana jest funkcja Free (), aby uwolnić przydzieloną przestrzeń w pamięci. Składnia funkcji Free () jest napisana poniżej:
#free (ptr);„PTR” to nazwa wskaźnika, którego przestrzeń pamięci zostanie uwolniona.
Teraz przyjrzymy się wykonaniu funkcji realLoc () w Ubuntu 20.04 Środowisko.
Wdrożenie funkcji RealLoc () w Ubuntu 20.04:
Jak wiemy o podstawie funkcji realLoc (), teraz możemy zaimplementować tę funkcję w Ubuntu 20.04 Środowisko. Aby wykonać nasz kod, uruchom terminal z pulpitu Ubuntu i wpisz „CD Desktop”, aby dostać się do katalogu stacjonarnego, a tym poleceniem „dotyk” możesz zrobić .plik c o nazwie i rozszerzeniu .C. Następnie przejdź na komputer stacjonarny i znajdź i otwórz .plik C. Teraz utworzymy kod w tym pliku, aby użyć metody realLoc () do realokacji pamięci.
Początkowo dodaliśmy dwie najważniejsze biblioteki języka C. Następnie rozpoczęliśmy nasz główny program. Zadeklarowaliśmy zmienną wskaźnika i stała się równa „null”. Że zastosowaliśmy metodę realLoc () i dodaliśmy do niej dwa parametry. Instrukcja „jeśli” jest dodawana do sprawdzenia warunku. Jeśli określony warunek jest w porządku, kompilator wykona instrukcję PrintF.
Po naciśnięciu przycisku Zapisz, zamknij plik. Wróć do terminalu i wpisz „G ++”, a następnie nazwę pliku i „.C ”rozszerzenie w celu wytworzenia pliku wyjściowego. Możesz teraz wykonać ten plik, wpisując „./”, A następnie twoje„.OUT „Rozszerzenie, aby otrzymać pożądane wyjście.
Jak widać, skutecznie przeważyliśmy przestrzeń pamięci wskaźnika za pomocą metody realLoc () i teraz lepiej rozumie, jak ta funkcja działa w aplikacji C z powodu tego przykładu.
Wniosek:
W tym samouczku zbadaliśmy koncepcję alokacji pamięci i jej różnych typów. Celem tego artykułu było dowiedzieć się o zaletach i wadach metody alokacji pamięci i gdzie ich użyć. Różne funkcje w metodzie dynamicznej alokacji pamięci zostały również omówione w poważnych szczegółach w tym artykule. Ostatecznie zaimplementowaliśmy również funkcję realLoc () w języku programowania C w Ubuntu 20.04 Środowisko, aby lepiej zrozumieć tę koncepcję.