De Toewijzing van het geheugen in C
De compiler van C heeft een bibliotheek van de geheugentoewijzing, bepaald in Geheugen malloc.h. is gereserveerd gebruikend de mallocfunctie, en komt een wijzer op het adres terug. Het neemt één parameter, de grootte van geheugen die in bytes wordt vereist.
Het volgende voorbeeld wijst ruimte voor het koord toe, "hello wereld".
ptr = (char *)malloc(strlen("Hello world") + 1);
Extra wordt byte vereist om met het karakter van de koordbeëindiging rekening te houden, ' \0 '. (Klusje wordt *) genoemd een gietvorm, en dwingt het terugkeertype om klusje te zijn *.
Aangezien de gegevenstypes verschillende grootte hebben, en malloc de ruimte in bytes terugkeert, het goede praktijk om portabiliteitsredenen is om de sizeofexploitant te gebruiken wanneer het specificeren van een toe te wijzen grootte.
Het volgende voorbeeld leest dan een koord in de buffer van de karakterserie en toewijst de nauwkeurige vereiste hoeveelheid geheugen en kopiëert het aan geroepen veranderlijk "ptr".
#include <string.h>
#include <malloc.h>
int main()
{
char *ptr, buffer[80];
printf("Enter a string: ");
gets(buffer);
ptr = (char *)malloc((strlen(buffer) + 1) *
sizeof(char));
strcpy(ptr, buffer);
printf("You entered: %s\n", ptr);
return 0;
}
De output van het programma zal als volgt zijn:
Enter a string: India is the best
You entered: India is the best |
|