Malloc () Funktion in der C-Bibliothek mit BEISPIEL

Inhaltsverzeichnis:

Anonim

Was ist Malloc in C?

Die Funktion malloc () steht für Speicherzuordnung. Mit dieser Funktion wird ein Speicherblock dynamisch zugeordnet. Es 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. Dies bedeutet, dass wir jedem Zeiger die Malloc-Funktion zuweisen können.

Syntax

ptr = (cast_type *) malloc (byte_size);

Hier,

  • ptr ist 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)

Wenn diese Anweisung erfolgreich ausgeführt wird, ist ein Speicherplatz von 50 Byte reserviert. Die Adresse des ersten Bytes des reservierten Speicherplatzes wird dem Zeiger ptr vom Typ int zugewiesen.

Betrachten Sie ein weiteres Beispiel für die Implementierung von malloc:

#include int main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}

Ausgabe:

Value of the 6th integer is 480

  1. Beachten Sie, dass sizeof (* ptr) anstelle von sizeof (int) verwendet wurde, um den Code robuster zu machen, wenn die * ptr-Deklaration später in einen anderen Datentyp typisiert wird.
  2. Die Zuordnung kann fehlschlagen, wenn der Speicher nicht ausreicht. In diesem Fall wird ein NULL-Zeiger zurückgegeben. Sie sollten also Code einschließen, um nach einem NULL-Zeiger zu suchen.
  3. Beachten Sie, dass der zugewiesene Speicher zusammenhängend ist und als Array behandelt werden kann. Wir können Zeigerarithmetik verwenden, um auf die Array-Elemente zuzugreifen, anstatt Klammern [] zu verwenden. Wir empfehlen, + zu verwenden, um auf Array-Elemente zu verweisen, da die Verwendung der Inkrementierung ++ oder + = die vom Zeiger gespeicherte Adresse ändert.

Die Malloc-Funktion kann auch mit dem Zeichendatentyp sowie mit komplexen Datentypen wie Strukturen verwendet werden.