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
- Let erop dat groottevan(*ptr) werd gebruikt in plaats van groottevan(int) om de code robuuster te maken wanneer de *ptr-declaratie later naar een ander gegevenstype wordt omgezet.
- 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.
- 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 [ ]. We adviseren om + te gebruiken om te verwijzen naar array-elementen, omdat het gebruik van incrementatie ++ of += het adres wijzigt dat is opgeslagen door de wijzer.
De Malloc-functie kan ook worden gebruikt met het gegevenstype karakter en complexe gegevenstypen zoals structuren.