free (z angličtiny - "release") - funkce standardní knihovny jazyka C , určená k uvolnění dříve přidělené dynamické paměti .
Funkce vezme ukazatel na oblast, která má být uvolněna, neboli NULL . Neexistuje žádná návratová hodnota. free()nekontroluje platnost ukazatele a může „uvolnit“ nealokovanou paměťovou oblast, což v některých implementacích může vést k nevratnému poškození haldy ( anglicky heap ). Volání funkce s NULL je bezpečné (kontrola NULL musí být provedena interně free()podle standardu). Aby se zabránilo poškození haldy, některé příručky jazyka C doporučují vynulovat každý uvolněný ukazatel.
Oblast paměti uvolněná po volání free()lze znovu alokovat, avšak časté volání malloc můžefree() vést k fragmentaci haldy a nemožnosti alokovat velké oblasti paměti.
Funkce je deklarována v hlavičkových souborech malloc.h , stdlib.h . Přesný popis chování funkce je uveden ve standardu ANSI C a odkazuje se na něj ve standardu POSIX .