malloc i C: Dynamisk hukommelsesallokering i C forklaret

Hvad er malloc () i C?

malloc () er en biblioteksfunktion, der giver C mulighed for at allokere hukommelse dynamisk fra bunken. Bunken er et hukommelsesområde, hvor noget er gemt.

malloc () er en del af stdlib.h og for at kunne bruge det skal du bruge #include .

Sådan bruges Malloc

malloc () tildeler hukommelse med en ønsket størrelse og returnerer en markør til begyndelsen af ​​den tildelte blok. For at holde denne returnerede markør skal vi oprette en variabel. Markøren skal være af samme type, der bruges i malloc-sætningen.

Her laver vi en markør til et snart opstået antal ints

int* arrayPtr;

I modsætning til andre sprog kender C ikke den datatype, den tildeler hukommelse til; det skal fortælles. Heldigvis har C en funktion kaldet, sizeof()som vi kan bruge.

arrayPtr = (int *)malloc(10 * sizeof(int));

Denne erklæring brugte malloc til at afsætte hukommelse til en matrix på 10 heltal. Da størrelser kan skifte mellem computere, er det vigtigt at bruge størrelsen på () -funktionen til at beregne størrelsen på den aktuelle computer.

Enhver hukommelse, der tildeles under programmets udførelse, skal frigøres, før programmet lukkes. Til freehukommelse kan vi bruge den gratis () funktion

free( arrayPtr );

Denne erklæring vil placere den tidligere tildelte hukommelse. C kommer ikke med garbage collectorsom nogle andre sprog, såsom Java. Som et resultat vil hukommelse, der ikke frigøres ordentligt, fortsat blive allokeret, efter at programmet er lukket.

Inden du går videre ...

En anmeldelse

  • Malloc bruges til dynamisk hukommelsestildeling og er nyttig, når du ikke kender den nødvendige mængde hukommelse under kompileringstiden.
  • Tildeling af hukommelse gør det muligt for objekter at eksistere uden for den nuværende blok.
  • C passerer ved værdi i stedet for reference. Brug af malloc til at tildele hukommelse og derefter overføre markøren til en anden funktion er mere effektiv end at lade funktionen genskabe strukturen.

Mere info om C-programmering:

  • Begynderhåndbogen til C-programmering
  • Hvis ... ellers forklares erklæring i C
  • Ternær operatør i C forklaret