Contents
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.
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.
VERGLEICHSGRUNDLAGE | MALLOC | CALLOC |
Beschreibung | Malloc() 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. |
Verwenden | Malloc() wird verwendet, um während der Laufzeit eines Programms Speicher zuzuweisen. | Calloc() wird verwendet, um mehrere Speicherblöcke derselben Größe dynamisch zuzuweisen. |
Syntax | Syntax von malloc(): void*malloc(size_t n); | Syntax von calloc(): void*calloc(size_t n, size_t Größe); |
Speicherinitialisierung | Der zugewiesene Speicher ist nicht initialisiert, dh er enthält Müllwerte. | Die Speicherinitialisierung erfolgt durch calloc(). Der Speicher wird mit Null initialisiert. |
Anzahl der Argumente | Malloc() 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. |
Speicherzuweisung | 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. | 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. |
Speicherblock | Malloc() 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. |
Zweck | Malloc() wird zum Erstellen von Strukturen verwendet. | Calloc() dient zum Erstellen dynamischer Arrays. |
Speicherzuweisungsgeschwindigkeit | Malloc() 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++
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.
Burger oder Döner? Zwei kulinarische Titanen, die die Herzen (und Mägen) von Millionen Menschen weltweit…
Haben Sie sich jemals gefragt, ob es einen Unterschied zwischen dem Lesen eines Buches und…
Stellen Sie sich vor, Sie sitzen in einem Diner und haben gerade einen saftigen Burger…
🍎 vs 🍏 - Ein knackiger Vergleich! Haben Sie sich jemals gefragt, warum es rote…
Haben Sie sich jemals gefragt, warum Sie manchmal bei Einkäufen Ihre PIN eingeben müssen und…
Haben Sie sich jemals gefragt, warum Ärzte manchmal eine CT-Untersuchung und in anderen Fällen ein…