Hva er dynamisk minnetildeling?
Dynamisk minnetildeling, også kalt heapbasert minnetildeling, er en type minnehåndtering som blir skarpt kontrast av statisk minnetildeling. Ved dynamisk minnetildeling forteller programmereren datamaskinen nøyaktig hvor mye minne som skal tildeles for hvert program og hvor lang tid på å holde på minnet. Dette løser mange av problemene som oppstår ved statisk hukommelsesallokering, for eksempel overforbruk av minne og stoppede programmer. Selv om det løser mange problemer, hvis programmereren glemmer å fortelle minnet om å dumpe, kan det dynamiske minnet bli et problem.
Datamaskiner bruker som standard statisk minnetildeling. Dette betyr at minnet holder fast i programmer når de brukes, selv om programmet ikke lenger brukes eller hvis det lagrede minnet blir farlig eller et hinder for ytelse. Hvis brukeren for eksempel slutter å kjøre et program som tar 2 megabyte (MB) på en 3 MB maskin, og et andre program trenger ytterligere 2 MB, fungerer ikke det andre programmet. Dette er fordi det ikke er nok minne igjen på datamaskinen til det andre programmet.
Ved tildeling av statisk minne kan ikke brukeren eller programmereren spesifisere hvor mye minne han eller hun vil ha lagret, og programmereren kan heller ikke fortelle det statiske minnet om å dumpe minnet for å frigjøre ressurser. Dette er grunnen til at avanserte brukere ofte bruker dynamisk minnetildeling. Programmereren er i stand til å kontrollere alt om minnet, inkludert hvor lang tid på å holde på ressursene.
For eksempel kan programmereren stille inn dynamisk minnetildeling slik at den bare holder på 1 MB, eller mindre, noe som vil spare nok systemminne til at andre programmer kan åpne. Dette kan gjøres fordi det statiske minnet vanligvis holder på alt om programmet, mens dynamisk minne lar programmerere sette det til en lavere verdi som inneholder noen data, men ikke alt. Samtidig vil det fortsatt være behov for statisk minne, og det kan stilles inn i dette tildelingsskjemaet.
Et potensielt problem med tildeling av dynamisk minne - en som sjelden kommer i spill - er at det dynamiske minnet kan fylle seg hvis programmereren glemmer å angi en tidsverdi. Hvis det ikke er satt noen tidsverdi, i motsetning til statisk minne som til slutt vil frigjøre minnet, vil dynamisk minne holde fast på informasjonen. Hvis programmet har en søppeldunk-applikasjon, og de fleste gjør det, vil det aktiveres etter en viss tid for å tømme minnet. Det er fortsatt god praksis å sette en tidsverdi for minnetildelingen.