free
Hebt die Zuweisung eines Speicherblocks auf oder gibt diesen frei.
Syntax
void free(
void *memblock
);
Parameter
memblock
Zuvor zugewiesener Speicherblock, der freigegeben werden soll.
Hinweise
Die Funktion free
gibt einen Speicherblock frei (memblock
), der zuvor durch einen Aufruf von calloc
, malloc
oder realloc
belegt wurde. Die Anzahl der freigegebenen Bytes entspricht der Anzahl der Bytes, die angefordert wurden, wenn der Block zugewiesen wurde (oder neu zugeordnet wurde).realloc
Ist memblock
dies NULL
der Wert, wird der Zeiger ignoriert und free
wird sofort zurückgegeben. Der Versuch, einen ungültigen Zeiger freizugeben (ein Zeiger auf einen Speicherblock, der nicht von calloc
, malloc
oder realloc
) zugewiesen wurde, kann sich auf nachfolgende Zuordnungsanforderungen auswirken und Fehler verursachen.
Wenn bei der Freigabe des Speichers ein Fehler auftritt, wird errno
mit Informationen des Betriebssystems über die Art des Fehlers angegeben. Weitere Informationen finden Sie untererrno
, _doserrno
, _sys_errlist
und _sys_nerr
.
Nachdem ein Speicherblock freigegeben wurde, wird die Menge an freiem Speicher auf dem Heap minimiert, _heapmin
indem die nicht verwendeten Regionen zusammengefasst und wieder an das Betriebssystem freigegeben werden. Freigegebener Arbeitsspeicher, der nicht für das Betriebssystem freigegeben ist, wird im kostenlosen Pool wiederhergestellt und steht erneut für die Zuweisung zur Verfügung.
Wenn die Anwendung mit einer Debugversion der C-Laufzeitbibliotheken verknüpft ist, free
wird sie aufgelöst._free_dbg
Weitere Informationen dazu, wie der Heap während des Debuggingvorgangs verwaltet wird, finden Sie im CRT-Debug-Heap.
free
ist als __declspec(noalias)
gekennzeichnet, d.h., die Funktion ändert keine globalen Variablen. Weitere Informationen finden Sie unter noalias
.
Verwenden Sie _freea
zum Freigeben des zugewiesenen _malloca
Arbeitsspeichers .
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Funktion | Erforderlicher Header |
---|---|
free |
<stdlib.h> und <malloc.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
Ein Beispiel hierfür finden Sie unter malloc
.
Siehe auch
Speicherzuweisung
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea