9 Unterschied zwischen Malloc () und Calloc () in C

Contents

Malloc ()

Die Funktion malloc() steht für Speicherzuweisung. Es ist eine Funktion, die verwendet wird, um einen Speicherblock dynamisch aus dem Heap zuzuweisen. Der Heap ist ein Speicherbereich, in dem etwas gespeichert wird. Calloc reserviert Speicherplatz der angegebenen Größe und gibt den Nullzeiger zurück, der auf den Speicherort zeigt. Der zurückgegebene Zeiger ist normalerweise vom Typ void. Das bedeutet, dass wir jedem Zeiger die malloc-Funktion zuweisen können. Malloc() ist nützlich, wenn Sie nicht wissen, wie viel Arbeitsspeicher während der Kompilierzeit benötigt wird.

Malloc() ist Teil von stdlib.h und um es verwenden zu können, müssen Sie #include <stdlib.h> verwenden. Malloc() weist zur Laufzeit Speicher zu. Es nimmt die Größe in Bytes an und weist so viel Speicherplatz im Speicher zu und gibt einen Zeiger auf den Anfang des zugewiesenen Blocks zurück.

C übergibt Wert anstelle von Referenz. Die Verwendung von malloc() zum Zuweisen von Speicher und anschließendem Übergeben des Zeigers an eine andere Funktion ist effizienter, als die Funktion die Struktur neu erstellen zu lassen.

Was Sie über Malloc wissen müssen ()

  • Malloc() ist eine Abkürzung für Memory Allocation. Es ist eine vordefinierte Funktion, die in der Header-Datei stdlib.h definiert ist.
  • Malloc() wird verwendet, um während der Laufzeit eines Programms Speicher zuzuweisen.
  • Syntax von malloc():   void*malloc(size_t n);
  • Der zugewiesene Speicher ist nicht initialisiert, dh er enthält Müllwerte.
  • Malloc() nimmt jeweils ein einzelnes Argument auf, d. h. die Anzahl der Bytes.
  • Für Malloc() wird bei erfolgreicher Speicherzuweisung ein void-Zeiger auf den Anfang des zugewiesenen Speichers zurückgegeben. Dieser void-Zeiger kann in einen beliebigen Zeigertyp umgewandelt werden. Wenn die Speicherzuweisung aus Gründen wie unzureichendem Speicher fehlschlägt, gibt die malloc()-Funktion einen NULL-Zeiger zurück.
  • Malloc() weist einen einzelnen Speicherblock mit gegebener Bytegröße zu.
  • Malloc() wird zum Erstellen von Strukturen verwendet.
  • Malloc() ist relativ schneller als calloc().

Calloc ()

Die Funktion calloc () steht für ansteckende Zuweisung. Diese Funktion wird verwendet, um mehrere Speicherblöcke zuzuweisen. Es handelt sich um eine dynamische Speicherzuweisungsfunktion, die verwendet wird, um den Speicher komplexen Datenstrukturen wie Arrays und Strukturen zuzuweisen.

Die Funktion calloc() weist Speicher für ein Array von nmemb- Elementen mit einer Größe von jeweils Bytes zu und gibt einen Zeiger auf den zugewiesenen Speicher zurück. Der Speicher wird auf Null gesetzt. Wenn nmemb oder size 0 ist, gibt calloc() entweder NULL oder einen eindeutigen Zeigerwert zurück, der später erfolgreich an free() übergeben werden kann.

Was Sie über Calloc wissen müssen ()

  • Calloc() ist eine Abkürzung für Contiguous Allocation. Es ist eine Weiterentwicklung der malloc()-Funktion.
  • Calloc() wird verwendet, um mehrere Speicherblöcke derselben Größe dynamisch zuzuweisen.
  • Syntax von calloc():   void*calloc(size_t n, size_t Größe);
  • Die Speicherinitialisierung erfolgt durch calloc(). Der Speicher wird mit Null initialisiert.
  • Die Calloc()-Funktion benötigt zwei Argumente. Das erste Argument ist die Anzahl der zuzuweisenden Speicherblöcke und das zweite Argument wird verwendet, um die Größe der Blöcke in Bytes zu definieren.
  • Für calloc() wird bei erfolgreicher Speicherzuweisung ein void-Zeiger auf den Anfang des zugewiesenen Speichers zurückgegeben. Dieser void-Zeiger kann in einen beliebigen Zeigertyp umgewandelt werden. Wenn die Speicherzuweisung aus Gründen wie unzureichendem Speicher fehlschlägt, gibt die Funktion calloc() den NULL-Zeiger zurück.
  • Calloc () weist mehrere Speicherblöcke zu, die mit der angegebenen Bytegröße im Speicher ansteckend sind.
  • Calloc() dient zum Erstellen dynamischer Arrays.
  • Calloc() benötigt Zeit, um mehrere Speicherblöcke zuzuweisen, da der zusätzliche Schritt des Initialisierens des zugewiesenen Speichers mit Null erforderlich ist. In der Praxis ist der Geschwindigkeitsunterschied jedoch sehr gering und nicht erkennbar.

Unterschied zwischen Malloc () und Calloc () in Tabellenform

VERGLEICHSGRUNDLAGE  MALLOCCALLOC
BeschreibungMalloc() ist eine Abkürzung für Memory Allocation. Es ist eine vordefinierte Funktion, die in der Header-Datei stdlib.h definiert ist.  Calloc() ist eine Abkürzung für Contiguous Allocation. Es ist eine Weiterentwicklung der malloc()-Funktion.  
VerwendenMalloc() wird verwendet, um während der Laufzeit eines Programms Speicher zuzuweisen.  Calloc() wird verwendet, um mehrere Speicherblöcke derselben Größe dynamisch zuzuweisen.  
SyntaxSyntax von malloc():   void*malloc(size_t n);  Syntax von calloc():   void*calloc(size_t n, size_t Größe);  
SpeicherinitialisierungDer zugewiesene Speicher ist nicht initialisiert, dh er enthält Müllwerte.  Die Speicherinitialisierung erfolgt durch calloc(). Der Speicher wird mit Null initialisiert.  
Anzahl der ArgumenteMalloc() nimmt jeweils ein einzelnes Argument auf, d. h. die Anzahl der Bytes.  Die Calloc()-Funktion benötigt zwei Argumente. Das erste Argument ist die Anzahl der zuzuweisenden Speicherblöcke und das zweite Argument wird verwendet, um die Größe der Blöcke in Bytes zu definieren.  
SpeicherzuweisungFür Malloc() wird bei erfolgreicher Speicherzuweisung ein void-Zeiger auf den Anfang des zugewiesenen Speichers zurückgegeben. Dieser void-Zeiger kann in einen beliebigen Zeigertyp umgewandelt werden. Wenn die Speicherzuweisung aus Gründen wie unzureichendem Speicher fehlschlägt, gibt die malloc()-Funktion einen NULL-Zeiger zurück.  Für calloc() wird bei erfolgreicher Speicherzuweisung ein void-Zeiger auf den Anfang des zugewiesenen Speichers zurückgegeben. Dieser void-Zeiger kann in einen beliebigen Zeigertyp umgewandelt werden. Wenn die Speicherzuweisung aus Gründen wie unzureichendem Speicher fehlschlägt, gibt die Funktion calloc() den NULL-Zeiger zurück.  
SpeicherblockMalloc() weist einen einzelnen Speicherblock mit gegebener Bytegröße zu.  Calloc () weist mehrere Speicherblöcke zu, die mit der angegebenen Bytegröße im Speicher ansteckend sind.  
ZweckMalloc() wird zum Erstellen von Strukturen verwendet.  Calloc() dient zum Erstellen dynamischer Arrays.  
SpeicherzuweisungsgeschwindigkeitMalloc() ist relativ schneller als calloc().  Calloc() benötigt Zeit, um mehrere Speicherblöcke zuzuweisen, da der zusätzliche Schritt des Initialisierens des zugewiesenen Speichers mit Null erforderlich ist.

Lesen Sie auch: Unterschied zwischen Stack und Heap in C++

Zusammenfassung

Die Funktionen malloc() und calloc() geben einen Zeiger auf den zugewiesenen Speicher zurück, der für jede Art von Variablen geeignet ausgerichtet ist. Im Fehlerfall geben diese Funktionen NULL zurück. NULL kann auch von einem erfolgreichen Aufruf von malloc() mit einer Größe von null oder von einem erfolgreichen Aufruf von calloc() mit nmemb oder einer Größe gleich null zurückgegeben werden.

osky