Der mit den Funktionen malloc und calloc zugewiesene Speicher wird nicht selbst freigegeben. Daher wird die freie Methode immer dann verwendet, wenn die dynamische Speicherallokation stattfindet. Es hilft, Speicherverschwendung zu reduzieren, indem es ihn freigibt.
Wie wird der zugewiesene Speicher wieder freigegeben?
In C wird die Bibliotheksfunktion malloc verwendet, um einen Speicherblock auf dem Heap zuzuweisen. Das Programm greift auf diesen Speicherblock über einen Zeiger zu, den malloc zurückgibt. Wenn der Speicher nicht mehr benötigt wird, wird der Zeiger an free übergeben, wodurch der Speicher freigegeben wird, damit er für andere Zwecke verwendet werden kann.
Was passiert, wenn Sie den zugewiesenen Speicher nicht freigeben?
In den meisten Fällen ist es sinnlos, Speicher kurz vor dem Beenden des Programms freizugeben. Das Betriebssystem wird es trotzdem zurückfordern. Free berührt und blättert die toten Objekte ein; das Betriebssystem nicht. Folge: Vorsicht bei "Lecksuchern", die Zuordnungen zählen.
Ist die Speicherzuweisung teuer?
Eine naive Messung der Kosten für das Zuweisen und Freigeben großer Speicherblöcke würde zu dem Schluss führen, dass es etwa 7,5 μs für jedes alloc/free-Paar kostet. Für große Zuweisungen fallen jedoch drei separate Kosten pro MB an.
Kann der zugewiesene Speicherplatz wieder freigegeben werden, wenn ja, wie?
Die realloc-Funktion weist den durch old_blk spezifizierten Speicherblock basierend auf den folgenden Regeln zu, weist ihn neu zu oder gibt ihn frei: Wenn old_blk NULL ist, ein neuer Speicherblock mit einer Größe von Bytes istzugeteilt. Wenn die Größe Null ist, wird die free-Funktion aufgerufen, um den Speicher freizugeben, auf den old_blk zeigt.