free
| Definiert im Header <stdlib.h> |
||
| void free( void *ptr ); |
||
Gibt den zuvor von malloc(), calloc(), aligned_alloc(),(seit C11) oder realloc() zugewiesenen Speicherplatz frei.
Wenn ptr ein Nullzeiger ist, tut die Funktion nichts.
Das Verhalten ist undefiniert, wenn der Wert von ptr nicht mit einem Wert übereinstimmt, der zuvor von malloc(), calloc(), realloc(), oder aligned_alloc()(seit C11) zurückgegeben wurde.
Das Verhalten ist undefiniert, wenn der durch ptr referenzierte Speicherbereich bereits freigegeben wurde, d. h., wenn 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) später einen Zeiger ergaben, der gleich ptr ist.
Das Verhalten ist undefiniert, wenn nach der Rückgabe von free() über den Zeiger ptr zugegriffen wird (es sei denn, eine andere Speicherzuordnungsfunktion hat zufällig einen Zeigerwert ergeben, der gleich ptr ist).
|
Ein Aufruf von |
(seit C11) |
Inhalt |
[bearbeiten] Parameter
| ptr | - | Zeiger auf den freizugebenden Speicher |
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Hinweise
Die Funktion akzeptiert (und tut nichts damit) den Nullzeiger, um den Aufwand für Sonderbehandlung zu reduzieren. Unabhängig davon, ob die Speicherzuordnung erfolgreich ist oder nicht, kann der von einer Speicherzuordnungsfunktion zurückgegebene Zeiger an free() übergeben werden.
[bearbeiten] Beispiel
#include <stdlib.h> int main(void) { int *p1 = malloc(10*sizeof *p1); free(p1); // every allocated pointer must be freed int *p2 = calloc(10, sizeof *p2); int *p3 = realloc(p2, 1000*sizeof *p3); if(p3) // p3 not null means p2 was freed by realloc free(p3); else // p3 null means p2 was not freed free(p2); }
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.24.3.3 Die Funktion free (S. 365)
- C17-Standard (ISO/IEC 9899:2018)
- 7.22.3.3 Die Funktion free (S. 254)
- C11-Standard (ISO/IEC 9899:2011)
- 7.22.3.3 Die Funktion free (S. 348)
- C99-Standard (ISO/IEC 9899:1999)
- 7.20.3.2 Die Funktion free (S. 313)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.10.3.2 Die Funktion free
[bearbeiten] Siehe auch
| alloziert Speicher (Funktion) | |
| (C23) |
dealloziert zuvor allozierten Speicher mit Größe (Funktion) |
| (C23) |
dealloziert zuvor allozierten Speicher mit Größe und Ausrichtung (Funktion) |
| C++ Dokumentation für free
| |