In C - ett programmeringsspråk designad av Dennis Ritchie på AT & T Bell Laboratories i början av 1970 - det malloc funktionen är ett sätt att fördela minne dynamiskt , eller som svar på efterfrågan , snarare än i absoluta termer . Ibland programmerare vet inte hur mycket minne som kommer att behövas för uppgifterna när de skriver ett program , gör så malloc dem att allokera minne dynamiskt när programmet har börjat springa . Memory Allocation
Som standard tilldelar malloc funktionen en sammanhängande , eller intill , block av minne på ett område som kallas en hög , som kan nås genom ett program för att lagra data och variabler . Den malloc Funktionen tar ett enda argument , en lång eller 32 -bitars heltal som representerar antalet bytes att fördela från högen . Den malloc funktionen frågar systemet efter ett block av minne av den angivna storleken och returnerar en pekare - en adress , ur synvinkel av programspråket - . Den första delen av blocket
returvärde
Datorer har endast en begränsad mängd minne , så det är möjligt för malloc funktionen att begära mer minne än vad som fysiskt tillgängligt och orsaka ett program att krascha . Om inte finns tillräckligt med minne , returnerar malloc en null- pekare , eller en pekare med värdet noll . För att förhindra att ett program kraschar , måste programmerare testa uttryckligen att malloc har inte återvänt null , så att de vet att den begärda minne tilldelades framgångsrikt innan du försöker använda den .
Släpper minne
samma sätt kan en dator inte ständigt allokera mer minne - och upprepade gånger skriva över en pekare som pekar på dynamiskt allokerat minne kan leda till att data blir otillgängliga . Dynamiskt allokerat minne måste därför släppas tillbaka till systemminnet poolen , med hjälp av gratis -funktionen , när den inte längre behövs . När en process avslutas , alla dynamiskt tilldelade minnet frigörs tillbaka till minnet poolen .
Syntax
Malloc returnerar en generisk pekare , eller en pekare att annullera , men pekaren kan skrivas , eller typecast , för att ange vilken typ av uppgifter som den pekar . Syntaxen " char * str = ( char * ) malloc ( 40 ) , " till exempel , allokerar minne för en sträng 40 tecken lång . Alternativt , kan programmerare deklarerar en pekare och anropa malloc när de vill göra plats för elementen i en array . Det är dock viktigt att notera att den malloc funktionen endast allokerar minne. Det gör inte tom eller annat formatera minnet det allokerar .