Pamięć przydzielona za pomocą funkcji malloc i calloc nie jest samodzielnie cofana. Stąd free metoda jest używana, ilekroć ma miejsce dynamiczna alokacja pamięci. Pomaga zmniejszyć marnowanie pamięci poprzez jej uwolnienie.
W jaki sposób przydzielona pamięć jest zwalniana?
W C, funkcja biblioteczna malloc jest używana do alokacji bloku pamięci na stercie. Program uzyskuje dostęp do tego bloku pamięci za pomocą wskaźnika zwracanego przez malloc. Gdy pamięć nie jest już potrzebna, wskaźnik jest przekazywany do free co zwalnia pamięć, aby można ją było wykorzystać do innych celów.
Co się stanie, jeśli nie zwolnisz przydzielonej pamięci?
W większości przypadków zwalnianie pamięci tuż przed zakończeniem programu jest bezcelowe. System operacyjny i tak go odzyska. Free dotknie i stronicuje martwe obiekty; system operacyjny nie. Konsekwencja: Bądź ostrożny z „wykrywaczami wycieków”, które liczą przydziały.
Czy alokacja pamięci jest droga?
Naiwny pomiar kosztu przydzielania i zwalniania dużych bloków pamięci może wywnioskować, że kosztuje to około 7,5 μs dla każdej pary alokacji/wolnej. Jednak w przypadku dużych alokacji istnieją trzy oddzielne koszty na MB.
Czy realloc może zwolnić przydzieloną przestrzeń pamięci, jeśli tak, jak?
Funkcja realloc przydziela, ponownie przydziela lub zwalnia blok pamięci określony przez old_blk w oparciu o następujące zasady: Jeśli old_blk ma wartość NULL, nowy blok pamięci o rozmiarze size bajtów jestasygnowany. Jeśli rozmiar wynosi zero, wywoływana jest wolna funkcja zwalniająca pamięć wskazywaną przez old_blk.