Hvad er dynamisk hukommelsesfordeling?
Dynamisk hukommelsesallokering, også kaldet heapbaseret hukommelsesallokering, er en type hukommelsesadministration, der skarpt kontrasteres af statisk hukommelsesallokering. Ved dynamisk hukommelsesallokering fortæller programmøren computeren nøjagtigt, hvor meget hukommelse der skal tildeles til hvert program, og hvor længe den skal holde fast i hukommelsen. Dette løser mange af de problemer, der opstår ved statisk hukommelsesallokering, såsom overforbrug af hukommelse og stoppede programmer. Selvom det løser mange problemer, hvis programmereren glemmer at fortælle hukommelsen at dumpe, kan den dynamiske hukommelse blive et problem.
Computere bruger som standard statisk hukommelsesallokering. Dette betyder, at hukommelsen holder fast i programmer, når de bruges, selvom programmet ikke længere bruges, eller hvis den holdte hukommelse bliver farlig eller en hindring for ydeevne. Hvis brugeren for eksempel holder op med at køre et program, der tager 2 megabyte (MB) på en 3 MB-maskine, og et andet program har brug for yderligere 2 MB, fungerer det andet program ikke. Dette skyldes, at der ikke er nok hukommelse tilbage på computeren til det andet program.
Ved tildeling af statisk hukommelse kan brugeren eller programmøren ikke specificere den mængde hukommelse, han eller hun vil have gemt, og programmøren kan heller ikke bede den statiske hukommelse om at dumpe hukommelsen for at frigøre ressourcer. Dette er grunden til, at avancerede brugere ofte bruger dynamisk hukommelsesallokering. Programmereren er i stand til at kontrollere alt omkring hukommelsen, inklusive hvor længe man skal holde på ressourcerne.
F.eks. Kan programmereren indstille dynamisk hukommelsesallokering til kun at holde fast på 1 MB, hvilket vil spare nok systemhukommelse til, at andre programmer kan åbnes. Dette kan gøres, fordi den statiske hukommelse normalt holder fast ved alt om programmet, mens dynamisk hukommelse tillader programmører at indstille det til en lavere værdi, der indeholder nogle data, men ikke alt. Samtidig er der stadig brug for statisk hukommelse, og den kan indstilles i dette tildelingsskema.
Et potentielt problem med dynamisk hukommelsesallokering - et, der sjældent kommer i spil - er, at den dynamiske hukommelse kan fyldes op, hvis programmereren glemmer at indstille en tidsværdi. Hvis der ikke er indstillet nogen tidsværdi, i modsætning til statisk hukommelse, der til sidst frigiver hukommelsen, vil dynamisk hukommelse holde fast på informationen. Hvis programmet har en affaldsdump-applikation, og de fleste gør, aktiveres det efter en vis tid for at rydde hukommelsen. Det er stadig bedste praksis at indstille en tidsværdi for hukommelsesallokering.