malloc() Functie in C-bibliotheek met VOORBEELD

Wat is malloc in C?

De malloc()-functie staat voor geheugentoewijzing. Het is een functie die wordt gebruikt om een ​​geheugenblok dynamisch toe te wijzen. Het reserveert geheugenruimte van een opgegeven grootte en retourneert de nulaanwijzer die naar de geheugenlocatie wijst. De geretourneerde pointer is meestal van het type void. Het betekent dat we de malloc-functie aan elke aanwijzer kunnen toewijzen.

Syntaxis

ptr = (cast_type *) malloc (byte_size);

Hier

  • ptr is een pointer van cast_type.
  • De malloc-functie retourneert een verwijzing naar het toegewezen geheugen van byte_size.
Example: ptr = (int *) malloc (50)

Wanneer deze instructie succesvol wordt uitgevoerd, is er een geheugenruimte van 50 bytes gereserveerd. Het adres van de eerste byte gereserveerde ruimte wordt toegewezen aan de pointer ptr van het type int.

Beschouw een ander voorbeeld van malloc-implementatie:

#include <stdlib.h>
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));
    }
}

Output:

Value of the 6th integer is 480

Wat is malloc in C

  1. Let erop dat groottevan(*ptr) werd gebruikt in plaats van groottevan(int) om de code robuuster te maken wanneer de *ptr-declaratie naar een ander gegevenstype wordt getypeerd later.
  2. De toewijzing kan mislukken als er niet voldoende geheugen is. In dit geval retourneert het een NULL-aanwijzer. U moet dus code toevoegen om te controleren op een NULL-aanwijzer.
  3. Houd er rekening mee dat het toegewezen geheugen aaneengesloten is en als een array kan worden behandeld. We kunnen pointer-berekeningen gebruiken om toegang te krijgen tot de array-elementen in plaats van te gebruiken brackets [ ]. We adviseren om + te gebruiken om naar array-elementen te verwijzen, omdat het gebruik van incrementatie ++ of += het adres verandert dat is opgeslagen door de wijzer.

De Malloc-functie kan ook worden gebruikt met het karaktergegevenstype en complex gegevenstypen zoals structuren.