free
Cofa przydział lub zwalnia blok pamięci.
Składnia
void free(
void *memblock
);
Parametry
memblock
Wcześniej przydzielony blok pamięci do zwolnienia.
Uwagi
Funkcja free
cofa przydział blok pamięci (memblock
), który został wcześniej przydzielony przez wywołanie metody calloc
, malloc
lub realloc
. Liczba wolnych bajtów jest równoważna liczbie bajtów żądanych podczas przydzielania bloku (lub przydziału rzeczywistego dla elementu realloc
). Jeśli memblock
wartość to NULL
, wskaźnik jest ignorowany i free
natychmiast zwraca wartość . Próba zwolnienia nieprawidłowego wskaźnika (wskaźnika do bloku pamięci, który nie został przydzielony przez calloc
, malloc
lub realloc
) może mieć wpływ na kolejne żądania alokacji i powodować błędy.
Jeśli wystąpi błąd podczas zwalniania pamięci, errno
jest ustawiany z informacjami z systemu operacyjnego o charakterze awarii. Aby uzyskać więcej informacji, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Po zwolnieniu _heapmin
bloku pamięci minimalizuje ilość wolnej pamięci na stercie, łącząc nieużywane regiony i zwalniając je z powrotem do systemu operacyjnego. Zwolniona pamięć, która nie została zwolniona w systemie operacyjnym, zostanie przywrócona do bezpłatnej puli i będzie dostępna ponownie do alokacji.
Gdy aplikacja jest połączona z wersją debugowania bibliotek czasu wykonywania języka C, free
jest rozpoznawana jako _free_dbg
. Aby uzyskać więcej informacji o sposobie zarządzania stertą podczas procesu debugowania, zobacz Sterta debugowania CRT.
free
jest oznaczony jako __declspec(noalias)
, co oznacza, że funkcja nie gwarantuje modyfikowania zmiennych globalnych. Aby uzyskać więcej informacji, zobacz noalias
.
Aby zwolnić pamięć przydzieloną za pomocą _malloca
polecenia , użyj polecenia _freea
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Function | Wymagany nagłówek |
---|---|
free |
<stdlib.h> i <malloc.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla elementu malloc
.
Zobacz też
Alokacja pamięci
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea