Unterschied zwischen calloc und malloc

Schlüsseldifferenz - Calloc vs. Malloc

Bei der Programmierung müssen Daten gespeichert werden. Daten werden im Speicher abgelegt. Diese Speicherplätze werden als Variablen bezeichnet. Jede Variable hat einen bestimmten Typ. Sie können Ganzzahlen, Gleitkommazahlen, Doppelpunkte, Zeichen usw. sein. Es gibt auch Datenstrukturen, in denen eine sequentielle Sammlung fester Größe von Elementen desselben Typs gespeichert werden kann. Es ist ein Array. Der Programmierer muss die Array-Größe angeben. Wenn der Programmierer ein Array von Ganzzahlen für fünf Elemente deklariert, ist es nicht möglich, einem Index einen Wert zuzuweisen, der die angegebene Größe übersteigt. Die Speicherzuordnung ist fest und kann zur Laufzeit nicht geändert werden. Eine andere Speicherzuweisungsmethode ist die dynamische Speicherzuweisung. Dynamische Speicherzuweisung hilft, bei Bedarf mehr Speicher zuzuordnen und bei Bedarf freizugeben. Die Header-Datei hat vier Funktionen für die dynamische Speicherzuordnung. Calloc und Malloc sind zwei solcher Funktionen. Das Hauptunterschied zwischen calloc und malloc ist das calloc ordnet den Speicher zu und initialisiert auch die zugewiesenen Speicherblöcke auf null, während malloc den Speicher zuordnet, diesen zugewiesenen Speicher jedoch nicht auf null initialisiert. Wenn Sie auf den Inhalt in calloc zugreifen, wird null angezeigt, aber malloc gibt einen Müllwert aus.

INHALT

1. Übersicht und Schlüsseldifferenz
2. Was ist Calloc?
3. Was ist Malloc?
4. Ähnlichkeiten zwischen Calloc und Malloc
5. Side-by-Side-Vergleich - Calloc und Malloc in Tabellenform
6. Zusammenfassung

Was ist Calloc??

Speicherzuordnung ist der Vorgang des Zuweisens von Speicher für die ausführenden Programme. Manchmal muss die Größe des Speichers geändert werden. Daher wird dynamische Speicherzuordnung verwendet. Es wird mit Zeigern gemacht. Zeiger sind Referenzvariablen, die die Adresse einer anderen Variablen enthalten.

Abbildung 01: Calloc und Malloc

Calloc steht für "zusammenhängende Zuordnung". Es weist mehrere Speicherblöcke mit der gleichen Größe zu. Die Syntax für Calloc lautet wie folgt. Es braucht zwei Argumente. Sie sind die Anzahl der Blöcke und die Größe jedes Blocks. Die Funktion calloc gibt einen ungültigen Zeiger zurück, daher wird ein Cast-Operator verwendet, um den Zeigertyp entsprechend dem erforderlichen Datentyp zurückzugeben.

        void * calloc (size_t num, size_t size);

Siehe das untenstehende einfache C-Programm.

#umfassen

#umfassen

int main ()

int ptr * = (int *) calloc (20, sizeof (int));

if (ptr == NULL)

printf ("Speicher wird nicht zugewiesen");

sonst

printf ("Speicher wird zugewiesen");

0 zurückgeben;

Gemäß dem obigen Programm wird ein zusammenhängender Speicherblock zugewiesen, der 20 Elemente enthalten kann. Jeder hat die Größe einer ganzen Zahl. Die sizeof (int) wird verwendet, da der Integer-Typ von Compiler zu Compiler variiert.

Wenn die Speicherzuordnung erfolgreich ist, wird die Basisadresse des Speicherblocks zurückgegeben. Das bedeutet, dass der Zeiger ptr jetzt auf die Basisadresse dieses Speicherblocks zeigt. Alle zugewiesenen Regionen werden mit Nullen initialisiert. Die Speicherzuweisungsnachricht wird gedruckt. Wenn die Speicherzuweisung nicht erfolgreich ist, wird der Nullzeiger zurückgegeben. Daher wird die Nachricht "Speicher nicht zugewiesen" gedruckt.

Was ist Malloc??

Die Malloc-Funktion dient zum Zuordnen der erforderlichen Byte-Menge im Speicher. Die Syntax für Malloc lautet wie folgt. Die Größe steht für den erforderlichen Speicher in Byte.

        void * malloc (size_t_size);

Die Funktion malloc gibt einen ungültigen Zeiger zurück, daher wird ein Cast-Operator verwendet, um den Zeigertyp entsprechend dem erforderlichen Datentyp zurückzugeben.

Beziehen Sie sich auf das untenstehende einfache C-Programm mit Malloc-Funktion.

#umfassen

#umfassen

int main ()

int ptr * = (int *) malloc (10 * sizeof (int));

if (ptr == NULL)

printf ("Speicher wird nicht zugewiesen");

sonst

printf ("Speicher wird zugewiesen");

0 zurückgeben;

Gemäß dem obigen Programm wird ein Speicherblock zugewiesen. Der Zeiger zeigt auf die Startadresse des zugewiesenen Speichers. Der zurückgegebene Zeiger wird in einen Integer-Typ konvertiert. Wenn Speicher zugewiesen ist, wird die Nachricht "Speicher wird zugewiesen" angezeigt. Wenn der Speicher nicht belegt ist, wird ein Nullzeiger zurückgegeben. Daher wird der Speicher nicht zugewiesen und die Nachricht wird gedruckt.

Was sind die Ähnlichkeiten zwischen Calloc und Malloc?

  • Beide Funktionen sind in der Header-Datei deklariert. Es ist die Standard-Bibliothekskopfdatei.
  • Beide Funktionen werden für die dynamische Speicherzuordnung verwendet.
  • Der von calloc und malloc zurückgegebene Zeiger sollte in den spezifischen Typ umgewandelt werden.
  • Bei erfolgreicher Speicherzuordnung geben beide Funktionen einen Zeiger mit der Basisadresse des Speicherblocks zurück.
  • Wenn die Speicherzuweisung nicht erfolgreich ist, wird ein Nullzeiger zurückgegeben.

Was ist der Unterschied zwischen Calloc und Malloc?

Calloc vs Malloc

calloc ist eine Funktion für die dynamische Speicherzuordnung in der Header-Datei der C-Sprache stdlib.h, die eine bestimmte Anzahl von Bytes zuordnet und diese auf Null initialisiert. malloc ist eine Funktion für die dynamische Speicherzuordnung in der Header-Datei der C-Sprache stdlib.h, die eine bestimmte Anzahl von Bytes zuordnet.
 Bedeutung
calloc steht für zusammenhängende Zuordnung. Malloc steht für Speicherzuordnung.
Syntax
calloc folgt einer Syntax ähnlich void * calloc (size_t_num, size_t size); malloc folgt einer Syntax ähnlich void * malloc (size_t_size);.
 Anzahl der Argumente
Calloc braucht zwei Argumente. Sie sind eine Anzahl von Blöcken und die Größe jedes Blocks. Malloc macht ein Argument. Es ist eine Anzahl von Bytes.
Geschwindigkeit
Calloc dauert etwas länger als Malloc. Dies liegt an dem zusätzlichen Schritt des Initialisierens des zugewiesenen Speichers durch Null. Malloc ist schneller als Calloc.

Zusammenfassung - Calloc vs Malloc

Bei der statischen Speicherzuordnung, beispielsweise bei der Verwendung von Arrays, ist der Speicher fest. Wenn nur wenige Elemente gespeichert sind, wird der Rest des Speichers verschwendet. Es kann auch Fehler verursachen, wenn der zugewiesene Speicher kleiner ist als der erforderliche Speicher. Daher wird dynamische Speicherzuordnung verwendet. In C-Sprache bieten Calloc und Malloc dynamische Speicherzuordnung. Der Unterschied zwischen Calloc und Malloc besteht darin, dass Calloc Speicher zuweist und auch die zugewiesenen Speicherblöcke auf Null initialisiert, während Malloc den Speicher zuordnet, Speicherblöcke jedoch nicht auf Null initialisiert. Malloc verwendet zwei Argumente, während Calloc zwei Argumente verwendet.

Laden Sie das PDF von Calloc vs Malloc herunter

Sie können die PDF-Version dieses Artikels herunterladen und gemäß Zitatvermerk für Offline-Zwecke verwenden. Laden Sie sich hier die PDF-Version herunter: Unterschied zwischen Calloc und Malloc

Referenz:

1. Kumar, Krishan. "Unterschied zwischen Malloc und Calloc in C." Cs-Fundamentals.com, Cs-Fundamentals.com. Hier verfügbar  
2. „Dynamische Speicherzuordnung für C“. Wikipedia, Wikimedia Foundation, 13. Januar 2018. Hier verfügbar 
3. “Calloc () versus Malloc ().” GeeksforGeeks, 14. Juni 2017. Hier verfügbar