Udostępnij za pośrednictwem


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, malloclub 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, malloclub 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_errlisti _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ą _mallocapolecenia , 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