Mis on dünaamiline mälu eraldamine?

Dünaamiline mälujaotus, mida nimetatakse ka kuhjapõhiseks mälujaotamiseks, on mäluhalduse tüüp, millele staatiline mälujaotus on teravalt vastandatud. Dünaamilise mälu jaotamise korral ütleb programmeerija arvutile täpselt, kui palju mälu iga programmi jaoks eraldada ja kui kaua mälus hoida. See lahendab paljud probleemid, mis tekivad staatilise mälu jaotamisel, nagu mälu ülekasutamine ja seiskunud programmid. Kuigi see lahendab palju probleeme, kui programmeerija unustab mälule käskida tühjendada, võib probleem muutuda dünaamilises mälus.

Arvutid kasutavad vaikimisi staatilist mälujaotust. See tähendab, et mälu hoiab programme nende kasutamise ajal kinni, isegi kui programmi enam ei kasutata või kui hoiustatud mälu muutub ohtlikuks või takistab nende jõudlust. Näiteks kui kasutaja lõpetab 2 MB masinas 3 megabaiti (MB) mahutava programmi käitamise ja teine ​​programm vajab veel 2 MB, siis teine ​​programm ei tööta. Põhjus on selles, et arvutis ei ole teise programmi jaoks piisavalt mälu.

Staatilise mälu jaotamise korral ei saa kasutaja ega programmeerija määrata, kui palju mälu ta soovib salvestada, samuti ei saa programmeerija käskida staatilisel mälul ressursside vabastamiseks mälu tühjendada. Seetõttu kasutavad kogenud kasutajad sageli dünaamilist mälujaotust. Programmeerija suudab juhtida kõike mälu kohta, sealhulgas seda, kui kaua ressursse hoida.

Näiteks saab programmeerija seada dünaamilise mälujaotuse hoidma ainult 1 MB või vähem, mis säästab piisavalt süsteemimälu, et võimaldada teiste programmide avamist. Seda saab teha, kuna staatiline mälu hoiab tavaliselt kõike programmi kohta, samas kui dünaamiline mälu võimaldab programmeerijatel määrata selle madalamale väärtusele, mis sisaldab mõningaid andmeid, kuid mitte kõike. Samal ajal on endiselt vaja staatilist mälu ja seda saab määrata selles jaotusskeemis.

Dünaamilise mälu jaotamise võimalik probleem – see, mis tuleb harva mängu – on see, et dünaamiline mälu võib täituda, kui programmeerija unustab ajaväärtuse seada. Kui ajaväärtust pole määratud, siis erinevalt staatilisest mälust, mis lõpuks mälu vabastab, hoiab dünaamiline mälu teavet. Kui programmil on prügimägede rakendus ja enamik seda teeb, aktiveerub see teatud aja pärast mälu tühjendamiseks. Endiselt on parim tava määrata mälu eraldamiseks ajaväärtus.