Mikä on dynaamisen muistin allokointi?

Dynaaminen muistin allokointi, jota kutsutaan myös kasapohjaiseksi muistinvaraukseksi, on eräänlainen muistinhallintatyyppi, joka on jyrkästi ristiriidassa staattisen muistin varauksen kanssa. Dynaamisessa muistinvarauksessa ohjelmoija kertoo tietokoneelle tarkalleen, kuinka paljon muistia on varattava kullekin ohjelmalle ja kuinka kauan muistia on säilytettävä. Tämä ratkaisee monet ongelmat, joita esiintyy staattisen muistin varaamisessa, kuten muistin liiallinen käyttö ja pysähtyneet ohjelmat. Vaikka se ratkaisee monia ongelmia, jos ohjelmoija unohtaa kertoa muistin tyhjennyksestä, dynaamisesta muistista voi tulla ongelma.

Tietokoneet käyttävät oletuksena staattista muistinvarausta. Tämä tarkoittaa, että muisti säilyy ohjelmissa, kun niitä käytetään, vaikka ohjelmaa ei enää käytettäisi tai jos pidätetystä muistista tulee vaarallinen tai suorituskyvyn este. Jos käyttäjä esimerkiksi lopettaa ohjelman, joka vie 2 megatavua (Mt) 3 Mt: n koneella, ja toinen ohjelma tarvitsee vielä 2 Mt, toinen ohjelma ei toimi. Tämä johtuu siitä, että tietokoneessa ei ole tarpeeksi muistia toiselle ohjelmalle.

Staattisen muistin varauksen yhteydessä käyttäjä tai ohjelmoija ei voi määrittää muistin määrää, jonka hän haluaa tallentaa, eikä ohjelmoija voi kertoa staattiselle muistille, että se tyhjentää muistin resurssien vapauttamiseksi. Tästä syystä edistyneet käyttäjät käyttävät usein dynaamista muistinvarausta. Ohjelmoija pystyy hallitsemaan kaikkea muistia, myös sitä, kuinka kauan resursseja pidetään.

Ohjelmoija voi esimerkiksi asettaa dynaamisen muistinvarauksen pitämään vain 1 Mt tai vähemmän, mikä säästää tarpeeksi järjestelmämuistia muiden ohjelmien avaamiseksi. Tämä voidaan tehdä, koska staattinen muisti pitää yleensä kiinni kaikesta ohjelmasta, kun taas dynaamisen muistin avulla ohjelmoijat voivat asettaa sen pienemmälle arvolle, joka sisältää joitakin tietoja, mutta ei kaikkea. Samaan aikaan staattista muistia tarvitaan edelleen, ja se voidaan asettaa tässä varausmallissa.

Mahdollinen ongelma dynaamisessa muistinvarauksessa – sellainen, joka tulee harvoin esille – on se, että dynaaminen muisti voi täyttyä, jos ohjelmoija unohti asettaa aika -arvon. Jos aika -arvoa ei ole asetettu, toisin kuin staattinen muisti, joka lopulta vapauttaa muistin, dynaaminen muisti säilyttää tiedot. Jos ohjelmalla on roskasäiliösovellus ja useimmilla on, se aktivoituu tietyn ajan kuluttua muistin tyhjentämiseksi. On edelleen paras käytäntö asettaa aika -arvo muistinvaraukselle.