I C - et programmeringsspråk designet av Dennis Ritchie ved AT & T Bell Laboratories i 1970-årene - den malloc funksjonen er et middel for å tildele minne dynamisk , eller som svar på behov, heller enn i absolutte termer. Noen ganger programmerere vet ikke hvor mye minne vil være behov for data på den tiden de skriver et program , gjør så malloc dem til å allokere minne dynamisk etter at programmet har startet . Memory Allocation
Som standard tildeler malloc funksjon et sammenhengende , eller tilstøtende, blokk med minne på et område kjent som en haug , som kan nås av et program for å lagre data og variabler . Den malloc funksjonen tar en enkelt argument , en lang eller 32 - bits heltall som representerer antall byte for å fordele fra haugen. Den malloc funksjon ber systemet for en blokk med minne av størrelsen spesifisert og returnerer en peker - en adresse , fra synspunkt av programmeringsspråket - . Til det første elementet av blokken
returverdi
Datamaskiner bare har en begrenset mengde minne, så det er mulig for malloc funksjonen for å be om mer minne enn det som er fysisk tilgjengelig og forårsake et program til å krasje. Hvis ikke nok minne tilgjengelig , returnerer malloc en null-peker , eller en peker til en verdi av null. For å hindre et program fra å krasje , må programmerere eksplisitt teste at malloc har ikke returnert null, slik at de vet at den forespurte minne ble tildelt vellykket før du forsøker å bruke den.
Releasing Minne
samme måte kan en datamaskin ikke stadig bevilge mer og mer minne - og gjentatte ganger overskriving en peker som peker til dynamisk allokert minne kan føre til data blir utilgjengelige. Dynamisk allokert minne må derfor slippes tilbake til systemminnet bassenget , ved hjelp av gratis -funksjonen , når det ikke lenger er nødvendig . Når en prosess opphører , hele dynamisk allokert minne slippes tilbake til minnet bassenget.
Syntax
malloc returnerer en generisk pekeren, eller en peker til å annullere , men pekeren kan være skrevet, eller typecast , for å indikere hvilken type data som det poeng. Syntaksen " char * str = ( char * ) malloc ( 40), " for eksempel , tildeler minne for en streng 40 tegn lang. Alternativt kan programmerere erklære en peker og påkalle malloc når de ønsker å gjøre plass til elementene i en matrise. Det er imidlertid viktig å merke seg at den malloc funksjonen bare allokerer minne . Det gjør ikke tømmes eller på annen måte initialisere minnet den fordeler .