free (fra engelsk - "release") - en funktion af standardbiblioteket i C -sproget , designet til at frigive tidligere tildelt dynamisk hukommelse .
Funktionen tager en markør til det område, der skal frigøres, eller NULL . Der er ingen returværdi. free()tjekker ikke pointeren for gyldighed, og kan "frigøre" et ikke-allokeret hukommelsesområde, hvilket i nogle implementeringer kan føre til irreversibel skade på heapen ( engelsk heap ). Det er sikkert at kalde en funktion med NULL (kontrol af NULL skal ske internt free()iht. standarden). For at undgå heap-korruption anbefaler nogle C-sprogmanualer at nulstille hver frigivet pointer.
Et område af hukommelse, der frigøres efter et opkald free(), kan allokeres igen, men hyppige opkald til malloc kanfree() føre til heap-fragmentering og manglende evne til at allokere store hukommelsesområder.
Funktionen er deklareret i header-filerne malloc.h , stdlib.h . En nøjagtig beskrivelse af funktionens adfærd er givet i ANSI C -standarden , og der henvises til i POSIX -standarden .