Inhaltsverzeichnis

free()

#include <cstdlib>

void free (void *ptr) 

Gibt durch calloc(), malloc() oder realloc() reservierten dynamischen Speicherblock frei.

Parameter

ptr gültiger Zeiger auf dynamischen Speicherbereich

Vorsicht, Gefahrenquellen:

  1. Nichtfreigeben führt zu Speicherlecks.
  2. Mehrmaliges Freigeben führt zu unkontrollierbarem Verhalten (Speicherkonfusion, Programmabbruch oder Schlimmeres).
  3. Laut Standard ISO C 9899:1999 ist der Aufruf mit dem Argumentwert NULL zulässig und unschädlich, bei älteren Compilern jedoch undefiniert.
  4. Mit new reservierter Speicher ist mit dem zugehörigen delete-Operator freizugeben.

Ergebnis

Rückgabewert: Keiner. Der ptr darf nach dem Aufruf nicht mehr dereferenziert werden.

Siehe auch

Operatoren new und delete, calloc(), malloc(), realloc().

Beispiel

free.cpp
#include <cstdlib>
#include <iostream>
 
int main()
{
  using namespace std;
  int anzahl = 1000;
  int *ptr = (int*) malloc(anzahl*sizeof(int));
 
  if (ptr != NULL)
  {
    ptr[0] = 0;
    ptr[anzahl-1] = 999; 
    // ...
    cout << ptr[0] << "..." << ptr[anzahl-1] << '\n';
    free(ptr);
  }
  else
  {
    cerr << "Nicht genug Speicher vorhanden.\n";
  } 
}