free (din engleză - "release") - o funcție a bibliotecii standard a limbajului C , concepută pentru a elibera memoria dinamică alocată anterior .
Funcția ia un pointer către zona de eliberat sau NULL . Nu există valoare de returnare. free()nu verifică validitatea indicatorului și poate „elibera” o zonă de memorie nealocată, ceea ce în unele implementări poate duce la deteriorarea ireversibilă a heap -ului ( heap în engleză ). Apelarea unei funcții cu NULL este sigură (verificarea pentru NULL trebuie făcută intern conform standardului). Pentru a evita coruperea heap-ului, unele manuale în limbaj C recomandă eliminarea la zero a fiecărui pointer eliberat. free()
O regiune de memorie eliberată după un apel free()poate fi alocată din nou, totuși apelurile frecvente către malloc potfree() duce la fragmentarea heap -ului și la incapacitatea de a aloca suprafețe mari de memorie.
Funcția este declarată în fișierele de antet malloc.h , stdlib.h . O descriere exactă a comportamentului funcției este dată în standardul ANSI C și este menționată în standardul POSIX .