Malloc () Functie in C-bibliotheek met VOORBEELD

Inhoudsopgave:

Anonim

Wat is malloc in C?

De functie malloc () staat voor geheugentoewijzing. Het is een functie die wordt gebruikt om een ​​geheugenblok dynamisch toe te wijzen. Het reserveert geheugenruimte met een gespecificeerde grootte en retourneert de nulwijzer die naar de geheugenlocatie wijst. De teruggezonden aanwijzer 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 pointer naar het toegewezen geheugen van byte_size.
Example: ptr = (int *) malloc (50)

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

Beschouw nog een voorbeeld van malloc-implementatie:

#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));}}

Uitgang:

Value of the 6th integer is 480

  1. Merk op dat sizeof (* ptr) werd gebruikt in plaats van sizeof (int) om de code robuuster te maken wanneer * ptr-declaratie later naar een ander gegevenstype wordt getypt.
  2. De toewijzing kan mislukken als het geheugen niet voldoende is. In dit geval retourneert het een NULL-aanwijzer. U moet dus code opnemen 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-rekenkunde gebruiken om toegang te krijgen tot de array-elementen in plaats van haakjes [] te gebruiken. We raden aan om + te gebruiken om naar array-elementen te verwijzen, omdat het gebruik van incrementatie ++ of + = het adres dat door de pointer is opgeslagen, verandert.

Malloc-functie kan ook worden gebruikt met het tekengegevenstype en met complexe gegevenstypen zoals structuren.