In C - et programmeringssprog designet af Dennis Ritchie på AT & T Bell Laboratories i begyndelsen af 1970'erne - at malloc funktionen er en mulighed for at allokere hukommelse dynamisk , eller som svar på efterspørgslen , snarere end i absolutte tal. Sommetider programmører ved ikke, hvor meget hukommelse vil være behov for data på det tidspunkt , de er ved at skrive et program , så malloc tillader dem at allokere hukommelse dynamisk efter programmet er begyndt at køre . Memory Allocation
Som standard malloc funktionen tildeler en tilstødende eller tilstødende, blok af hukommelse på et område kendt som en bunke , som kan tilgås af et program til at gemme data og variabler . Den malloc funktion tager et enkelt argument , en lang eller 32-bit heltal, der repræsenterer det antal bytes til at afsætte fra bunke. Den malloc -funktionen spørger systemet til en blok af hukommelse den angivne størrelse og returnerer en pointer - en adresse , fra synspunkt af programmeringssprog - . Til det første element af blokken
< br > returværdien
Computers kun har en begrænset mængde hukommelse , så det er muligt for malloc funktionen til at anmode om mere hukommelse end der er fysisk til rådighed og forårsage et program til at gå ned . Hvis det ikke er nok hukommelse til rådighed, malloc returnerer en null-pointer eller en pointer til en værdi af nul. For at forhindre et program går ned , skal programmører eksplicit teste, malloc er ikke vendt tilbage null, så de ved, at den anmodede hukommelse blev tildelt succes , inden du forsøger at bruge det.
Releasing hukommelse
Ligeledes kan en computer ikke konstant allokere mere og mere hukommelse - og gentagne gange overskrive en pointer , der peger på dynamisk allokeret hukommelse kan føre til data bliver utilgængelige. Dynamisk allokeret hukommelse skal derfor frigives tilbage til systemets hukommelse pool, ved hjælp af gratis -funktionen , når den ikke længere er nødvendig. Når en proces afsluttes , alt dynamisk allokeret hukommelse frigives tilbage til hukommelse pool .
Syntaks
malloc returnerer en generisk pointer eller en pegepind til at annullere , men markøren kan skrives, eller typecast , at angive den type data, som den peger . Syntaksen " char * str = ( char * ) malloc (40) , " for eksempel , allokerer hukommelse til en streng 40 tegn lange. Alternativt kan programmører erklære en pointer og påberåbe malloc , når de ønsker at gøre plads til de elementer i et array . Men det er vigtigt at bemærke, at allokere funktionen kun allokerer hukommelse . Det gør ikke tomme eller på anden måde initialisere hukommelsen den afsætter .