malloc i C: Dynamic Memory Allocation in C Explained

Hva er Malloc () i C?

malloc () er en biblioteksfunksjon som gjør at C kan allokere minne dynamisk fra dyngen. Haugen er et minneområde hvor noe lagres.

malloc () er en del av stdlib.h og for å kunne bruke den må du bruke #include .

Hvordan bruke Malloc

malloc () tildeler minne av en ønsket størrelse og returnerer en peker til begynnelsen av den tildelte blokken. For å holde denne returnerte pekeren, må vi opprette en variabel. Pekeren skal være av samme type som brukes i malloc-setningen.

Her vil vi lage en pekepinn til en snart rekke matter

int* arrayPtr;

I motsetning til andre språk kjenner C ikke datatypen den tildeler minne til; det trenger å bli fortalt. Heldigvis har C en funksjon som heter sizeof()vi kan bruke.

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

Denne påstanden brukte malloc for å sette av minne for en rekke med 10 heltall. Siden størrelser kan endres mellom datamaskiner, er det viktig å bruke størrelsen på () -funksjonen for å beregne størrelsen på den gjeldende datamaskinen.

Alt minne som tildeles under programutførelsen, må frigjøres før programmet avsluttes. Til freeminne kan vi bruke gratis () -funksjonen

free( arrayPtr );

Denne erklæringen vil distribuere minnet som tidligere er tildelt. C kommer ikke med garbage collectorsom noen andre språk, for eksempel Java. Som et resultat vil minne som ikke er ordentlig frigjort fortsette å tildeles etter at programmet er lukket.

Før du går videre ...

En anmeldelse

  • Malloc brukes til dynamisk minnetildeling og er nyttig når du ikke vet hvor mye minne som trengs i kompileringstiden.
  • Tildeling av minne lar objekter eksistere utenfor omfanget av den nåværende blokken.
  • C går forbi verdi i stedet for referanse. Å bruke malloc til å tilordne minne, og deretter overføre pekeren til en annen funksjon, er mer effektivt enn å få funksjonen til å gjenskape strukturen.

Mer informasjon om C-programmering:

  • Nybegynnerhåndboken for C-programmering
  • Hvis ... annet uttalelse i C forklart
  • Ternær operatør i C forklart