Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

malloc() vs. calloc():Hauptunterschiede mit Beispielen erklärt

Bevor wir den Unterschied zwischen malloc und calloc lernen, lasst uns lernen-

Was ist dynamische Speicherzuweisung?

Die dynamische Speicherzuweisung ist ein Prozess der Speicherzuweisung zur Laufzeit. Es gibt vier Bibliotheksroutinen, calloc(), free(), realloc() und malloc(), die verwendet werden können, um Speicher zuzuweisen und ihn während der Programmausführung freizugeben. Diese Routinen sind in der Header-Datei namens stdlib.h.

definiert

Was ist malloc() ?

Es ist eine Funktion, die verwendet wird, um einen Speicherblock dynamisch zuzuweisen. Es reserviert Speicherplatz der angegebenen Größe und gibt den Nullzeiger zurück, der auf die Speicherstelle zeigt.

Der zurückgegebene Zeiger ist normalerweise vom Typ void. Das bedeutet, dass wir jedem Zeiger die malloc-Funktion zuweisen können. Die vollständige Form von malloc ist die Speicherzuweisung.

In diesem Tutorial lernen Sie:

Was ist calloc() ?

Die Calloc()-Funktion wird verwendet, um mehrere Speicherblöcke zuzuweisen. Es ist eine dynamische Speicherzuweisungsfunktion, die verwendet wird, um den Speicher komplexen Datenstrukturen wie Arrays und Strukturen zuzuweisen. Wenn diese Funktion nicht wie angegeben genügend Speicherplatz zuordnen kann, gibt sie einen Nullzeiger zurück. Die vollständige Form der calloc-Funktion ist eine fortlaufende Zuweisung.

Warum malloc() verwenden?

Hier sind die Gründe für die Verwendung von malloc()

Warum calloc() verwenden?

Hier sind die Gründe für die Verwendung von calloc()

Syntax von malloc()

Hier ist eine Syntax von malloc()

ptr = (cast_type *) malloc (byte_size);

In der obigen Syntax ist ptr ein Zeiger von cast_type. Die malloc-Funktion gibt einen Zeiger auf den zugewiesenen Speicher von byte_size.

zurück
Example: ptr = (int *) malloc (50)

Bei erfolgreicher Ausführung dieser Anweisung wird ein Speicherplatz von 50 Byte reserviert. Die Adresse des ersten Bytes des reservierten Speicherplatzes wird dem Zeiger „ptr“ vom Typ int.

zugewiesen

Syntax von calloc()

Hier ist eine Syntax von malloc()

ptr = (cast_type *) calloc (n, size);

Die obige Syntax wird verwendet, um n Speicherblöcke derselben Größe zuzuweisen. Nachdem der Speicherplatz zugewiesen wurde, werden alle Bytes auf Null initialisiert. Zurückgegeben wird der Zeiger, der aktuell auf dem ersten Byte des belegten Speicherplatzes steht.

Beispiel für malloc() in C

Im folgenden Code wird sizeof(*ptr) verwendet, um einen Speicherblock mit 15 Ganzzahlen zuzuweisen. In der printf-Anweisung finden wir den Wert der 6. Ganzzahl.

#include<stdlib.h>
#include<stdio.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); 
    if (ptr != NULL) {
      *(ptr + 5) = 480; 
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

Ausgabe:

Wert der 6. Ganzzahl ist 480

Beispiel für calloc() in C

Das folgende C-Sprachprogramm berechnet die Summe der ersten zehn Terme. Wenn der Zeigerwert null ist, wird der Speicherplatz nicht zugewiesen.

Die For-Schleife wird verwendet, um den Wert einer Variablen „i“ zu iterieren und die Summe auszugeben. Zuletzt wird die Funktion free verwendet, um den Zeiger freizugeben.

#include <stdio.h>
#include <stdlib.h>
    int main() {
        int i, * ptr, sum = 0;
        ptr = calloc(10, sizeof(int));
        if (ptr == NULL) {
            printf("Error! memory not allocated.");
            exit(0);
        }
        printf("Building and calculating the sequence sum of the first 10 terms \n");
        for (i = 0; i < 10; ++i) { * (ptr + i) = i;
            sum += * (ptr + i);
        }
        printf("Sum = %d", sum);
        free(ptr);
        return 0;
    }

Ausgabe:

Bildung und Berechnung der Folgesumme der ersten 10 Terme n Sum =45

Unterschied zwischen calloc() und malloc()

Hier sind wichtige Unterschiede zwischen malloc() und calloc():

malloc() calloc() Die Malloc()-Funktion erstellt einen einzelnen Speicherblock der vom Benutzer angegebenen Größe. Die Calloc()-Funktion kann mehrere Speicherblöcke für eine Variable zuweisen. Die Malloc-Funktion enthält Müllwerte. Der von einer calloc-Funktion zugewiesene Speicherblock wird immer initialisiert Null. Anzahl der Argumente ist 1. Anzahl der Argumente ist 2. Calloc ist langsamer als malloc. Malloc ist schneller als calloc. Es ist im Vergleich zu calloc nicht sicher (). Die Zeiteffizienz ist geringer als bei malloc(). Die Malloc()-Funktion gibt nur die Startadresse zurück und macht sie nicht zu Null. Vor dem Zuweisen der Adresse gibt die Calloc()-Funktion die Startadresse zurück und macht sie zu Null. Sie führt keine Initialisierung durch des Speichers. Es führt eine Speicherinitialisierung durch.

WICHTIGE UNTERSCHIEDE:


C Sprache

  1. C#-Ausdrücke, -Anweisungen und -Blöcke (mit Beispielen)
  2. C++ do…while-Schleife mit Beispielen
  3. C++-Zeiger mit Beispielen
  4. C++ Char-Datentyp mit Beispielen
  5. Überladen von C++-Operatoren mit Beispielen
  6. C++ Funktionen mit Programmbeispielen
  7. Tutorial zu C#-Sammlungen mit Beispielen
  8. Unterschied zwischen while und do-while:An Beispielen erklärt
  9. calloc()-Funktion in der C-Bibliothek mit Programm BEISPIEL
  10. Python String count() mit BEISPIELE