Wolna pamięć w C z wolną funkcją

Free Memory C With Free Function



Język C jest wystarczająco wydajny, aby poradzić sobie z zarządzaniem pamięcią. Oznacza to, że za każdym razem, gdy deklarujesz zwykłą zmienną dowolnego typu danych w C, sam język programowania jest odpowiedzialny za zwolnienie lub zwolnienie tej pamięci po pomyślnym wykonaniu programu. Jednak w przypadku dynamicznej alokacji pamięci, ponieważ przydzielasz pamięć ręcznie, musisz ją również zwolnić samodzielnie.

W bibliotece stdlib.h znajduje się dedykowana funkcja służąca do tego celu, czyli funkcja free(). Dzisiaj zbadamy potrzebę użycia tej funkcji w języku programowania C. Następnie przyjrzymy się kilku przykładom, w których ta funkcja została wykorzystana do ręcznego zwolnienia pamięci w języku programowania C w systemie Linux.







Konieczność użycia bezpłatnej funkcji w C w celu zwolnienia pamięci systemowej:

Wszyscy wiemy, że nasze systemy komputerowe mają ograniczoną pamięć, przez co nigdy nie możemy uruchamiać w nich nieskończonych programów. W przypadku automatycznego przydzielania pamięci, komputer zajmuje się zwolnieniem pamięci po zakończeniu działania programu. Jednak gdy ręcznie alokujemy pamięć ze sterty, musimy ją w ten czy inny sposób uwolnić.



W przeciwnym razie w końcu zabraknie nam pamięci i nie będziemy dalej uruchamiać naszych programów. W tym miejscu w grę wchodzi funkcja free() biblioteki stdlib.h. Używamy tej funkcji na końcu programu, tuż przed instrukcją return, aby pamięć sterty została zwrócona do systemu komputerowego przed zakończeniem programu.



Załóżmy, że będziesz ignorować tę funkcję podczas pisania kodów C, które są szczególnie ukierunkowane na dynamiczną alokację pamięci. W takim przypadku nadejdzie moment, w którym nie będziesz mógł już uzyskać dostępu do sterty, ponieważ zabraknie jej pamięci. Dlatego nigdy nie wolno zapominać o tej pozornie mniej wartościowej funkcji, gdy dynamicznie przejmujesz odpowiedzialność za alokację pamięci.





Ogólna składnia funkcji free() w języku programowania C jest następująca:

próżniadarmowy (próżnia*ptr)

Tutaj słowo kluczowe void przed funkcją free() mówi, że typ zwracany przez tę funkcję jest void. Wskaźnik wewnątrz nawiasów odpowiada lokalizacji pamięci, która musi zostać zwolniona. W poniższej sekcji opisano kilka przykładów, w których funkcja free() została użyta do zwolnienia pamięci dynamicznej nabytej w C.



Przykłady użycia funkcji Free w C:

Funkcja free() może być używana ze wszystkimi trzema funkcjami alokacji pamięci biblioteki stdlib.h, tj. malloc, calloc i realloc. Użycie tej funkcji jest obowiązkowe po ustaleniu podstawowych funkcji programu, aby można było przekazać pamięć sterty, która została dynamicznie przydzielona podczas wykonywania programu, z powrotem do systemu komputerowego. Przyjrzyjmy się teraz kilku przykładom, w których funkcja free() została użyta z funkcjami malloc i calloc w języku programowania C.

Przykład nr 1: Używanie funkcji Free z calloc w C:

Kod C do używania funkcji free() z funkcją calloc() został udostępniony na poniższym obrazku:

Podstawowym celem tego kodu było dynamiczne przypisanie pewnej ilości pamięci za pomocą funkcji calloc(). W tym celu przyjęliśmy rozmiar pamięci dynamicznej i wartości tej pamięci dynamicznej jako dane wejściowe od użytkownika. Następnie zamierzaliśmy wydrukować uzyskane wartości na terminalu. Po tym całym kodzie mamy naszą funkcję free(), która zwolni przydzieloną pamięć dynamiczną z powodu wykonania naszego programu w C.

Nieco zmodyfikowaną wersję tego samego kodu pokazano również na poniższym obrazku:

Ta zmodyfikowana wersja miała na celu jedynie wydrukowanie naszych dynamicznie alokowanych wartości pamięci przed ręczną inicjalizacją. Wiemy, że funkcja calloc() inicjuje całą pamięć zerami przed aktualizacją. Jednak głównym punktem, na który należy zwrócić uwagę w tym kodzie, jest to, że chociaż ten kod był dość zwarty i prosty, nadal korzystaliśmy z funkcji free(), gdy pożądana funkcjonalność została osiągnięta tylko po to, aby zwolnić pamięć sterty, którą mieliśmy nabyte w wyniku wykonania tego programu w C.

Przykład nr 2: Użycie funkcji Free z malloc w C:

Kod C do używania funkcji free() z funkcją malloc() został udostępniony na poniższym obrazku:

Podstawowym celem tego kodu było dynamiczne przypisanie pewnej ilości pamięci za pomocą funkcji malloc(). W tym celu przypisaliśmy wartości tej pamięci dynamicznej w pętli for. Następnie zamierzaliśmy wydrukować uzyskane wartości na terminalu za pomocą innej pętli for. Po tym całym kodzie mamy naszą funkcję free() tuż przed instrukcją return, która po prostu zwolni przydzieloną pamięć dynamiczną w wyniku wykonania naszego programu w C.

Wniosek:

W tym artykule podkreślono znaczenie użycia funkcji free() w języku programowania C w Linuksie. Większość użytkowników uważa, że ​​funkcje alokacji pliku stdlib.h są ważniejsze; jednak, przeglądając ten artykuł, możesz wyraźnie zobaczyć, że funkcja free() jest równie ważna. Pomoże Ci uwolnić dynamicznie nabytą pamięć i zapewni, że nigdy nie zabraknie Ci pamięci za każdym razem, gdy będziesz próbował wykonać swoje programy w przyszłości.