free
|
Definiert in Header
<stdlib.h>
|
||
|
void
free
(
void
*
ptr
)
;
|
||
Gibt den zuvor durch malloc() , calloc() , aligned_alloc() , (since C11) oder realloc() allokierten Speicher frei.
Wenn
ptr
ein Nullzeiger ist, führt die Funktion keine Aktion aus.
Das Verhalten ist undefiniert, wenn der Wert von
ptr
nicht einem zuvor von
malloc()
,
calloc()
,
realloc()
, oder
aligned_alloc()
(seit C11)
zurückgegebenen Wert entspricht.
Das Verhalten ist undefiniert, wenn der Speicherbereich, auf den
ptr
verweist, bereits freigegeben wurde, das heißt,
free()
,
free_sized()
,
free_aligned_sized()
(seit C23)
oder
realloc()
bereits mit
ptr
als Argument aufgerufen wurde und keine Aufrufe von
malloc()
,
calloc()
,
realloc()
oder
aligned_alloc()
(seit C11)
anschließend zu einem Zeiger gleich
ptr
führten.
Das Verhalten ist undefiniert, wenn nachdem
free()
zurückgekehrt ist, ein Zugriff über den Zeiger
ptr
erfolgt (es sei denn, eine andere Allokationsfunktion ergab zufällig einen Zeigerwert gleich
ptr
).
|
Ein Aufruf von
|
(seit C11) |
Inhaltsverzeichnis |
Parameter
| ptr | - | Zeiger auf den freizugebenden Speicher |
Rückgabewert
(keine)
Hinweise
Die Funktion akzeptiert (und tut nichts mit) den Nullzeiger, um die Menge an Sonderbehandlungen zu reduzieren. Unabhängig davon, ob die Allokation erfolgreich ist oder nicht, kann der von einer Allokationsfunktion zurückgegebene Zeiger an
free()
übergeben werden.
Beispiel
#include <stdlib.h> int main(void) { int *p1 = malloc(10*sizeof *p1); free(p1); // jeder allokierte Zeiger muss freigegeben werden int *p2 = calloc(10, sizeof *p2); int *p3 = realloc(p2, 1000*sizeof *p3); if(p3) // p3 nicht null bedeutet, p2 wurde durch realloc freigegeben free(p3); else // p3 null bedeutet, p2 wurde nicht freigegeben free(p2); }
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.24.3.3 Die free-Funktion (S: 365)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.22.3.3 Die free-Funktion (S. 254)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.22.3.3 Die free-Funktion (S. 348)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.20.3.2 Die free-Funktion (S. 313)
- C89/C90-Standard (ISO/IEC 9899:1990):
-
- 4.10.3.2 Die free-Funktion
Siehe auch
|
Speicher allozieren
(Funktion) |
|
|
(C23)
|
Gibt zuvor allokierten speichergrößengebundenen Speicher frei
(Funktion) |
|
(C23)
|
Gibt zuvor allokierten speichergrößengebundenen und ausgerichteten Speicher frei
(Funktion) |
|
C++-Dokumentation
für
free
|
|