Hva er Dynamic Memory Allocation?

February 21  by Eliza

Dynamisk minne allokering, også kalt heap-basert minnetildeling, er en type minnehåndtering som er skarp kontrast av statisk minne tildeling. I dynamisk minne allokering, programmerer forteller datamaskinen nøyaktig hvor mye minne til å tildele for hvert program og hvor lenge å holde på minnet. Dette løser mange av problemene som oppstår i statisk minne tildeling, for eksempel overforbruk av minne og stoppet opp programmer. Mens det løser mange problemer, hvis programmereren glemmer å fortelle minnet å dumpe, så det dynamiske minnet kan bli et problem.

Datamaskiner, som standard, bruker statisk minne tildeling. Dette betyr minnet holder på programmer når de blir brukt, selv om programmet ikke lenger er i bruk, eller hvis den holdt minnet blir farlig eller til hinder for ytelsen. For eksempel, hvis brukeren slutter å kjøre et program som tar to megabyte (MB) på en 3 MB maskin, og en andre program trenger en annen 2 MB, det andre programmet ikke vil fungere. Dette er fordi det ikke er nok minne igjen i maskinen for det andre programmet.

Med statisk fordeling av minne, kan brukeren eller programmerer ikke spesifisere hvor mye minne han eller hun ønsker lagret, og heller ikke kan programmereren fortelle statisk minne å dumpe minnet for å frigjøre ressurser. Dette er grunnen til at avanserte brukere ofte bruker dynamisk minne allokering. Programmereren er i stand til å kontrollere alt om minnet, inkludert hvor lenge å holde på ressurser.

For eksempel kan programmerer satt dynamisk minne allokering å holde på bare 1 MB, eller mindre, noe som ville spare nok systemminne å tillate andre programmer å åpne. Dette kan gjøres fordi statisk minne holder vanligvis på alt om programmet, mens dynamisk minne lar programmerere å sette den på en lavere verdi som holder noen data, men ikke alt. Samtidig, vil statisk minne fremdeles være nødvendig, og det kan settes i denne tildelingsskjemaet.

Et potensielt problem med dynamisk minne allokering - en som sjelden kommer inn i bildet - er at det dynamiske minnet kan fylle opp hvis programmereren glemmer å sette en tidsverdi. Hvis ingen tidsverdien er satt, i motsetning til statisk minne som til slutt vil frigjøre minne, vil dynamisk minne holde på informasjonen. Hvis programmet har en søppeldynge søknad, og de fleste gjør det, vil det aktivere etter en viss tid for å tømme minnet. Det er fortsatt best praksis å sette en tidsverdi for minnetildelingen.