Vapaa luettelo on tietorakenne, joka sisältää tietokoneen muistipaikkojen osoitteet, jotka ovat käytettävissä käynnissä olevalle ohjelmalle käytettäessä dynaamista muistinvarausta. Luettelo tulee tarpeelliseksi, kun ohjelman on varattava tilaa Vapaan muistin toteuttaminen voi olla yksinkertainen linkitetty luettelo tai monimutkaisempi tietorakenne, kuten Useimmat korkean tason tietokoneohjelmointikielet käsittelevät ilmaista luetteloa automaattisesti, eikä manuaalista hallintaa tarvita.
Kun ohjelma tarvitsee tilaa tietojen tallentamiseen ohjelman suorituksen aikana, sen on pyydettävä tietty määrä muistia taustalla olevalta käyttöjärjestelmältä. Käytettävissä olevien muistilohkojen sijainnit tallennetaan vapaaseen Jotta varaus onnistuisi, vaaditun muistin määrän on oltava käytettävissä yhdessä tai useammassa näistä lohkoista. Kun osoitin sopivaan muistipaikkaan palautetaan, että luettelon osa poistetaan.
Kun ohjelma on käytetty muistia käyttämällä, se voi poistaa sen allokoinnin. Tämä sisältää osoittimen siirtämisen muistilohkoon takaisin vapaalle listalle, jossa se tulee saataville seuraavan kerran, kun varaus on On mahdollista, että muistin varaus epäonnistuu, koska luettelo on tyhjä tai koska käytettävissä ei ole tarpeeksi suuria muistilohkoja ohjelman pyynnön täyttämiseksi.
Yksinkertaisinta muistinhallintamuotoa kutsutaan ensimmäisen sovituksen järjestelmäksi. Tämä järjestelmä ylläpitää yhtä luetteloa vapaista muistipaikoista. Kun muistipyyntö lähetetään, luettelo kulkee läpi ja ensimmäinen lohko Jos lohko on yli kaksi kertaa pyydetty koko, se puolitetaan ja käyttämätön puoli lisätään takaisin luetteloon. Tämä menetelmä kauppaa yksinkertaista koodausta vaarana on pirstoutuneita muistialueita, joita ei ehkä koskaan palauteta luetteloon.
Erilaista muistinhallintamuotoa kutsutaan kaverien varausjärjestelmäksi. Toisin kuin ensimmäinen sovitusjärjestelmä, kaverien varaus pitää useita ilmaisia luetteloita, joista jokaisella on vain tietyn kokoisia avoimia lohkoja. Tämä tarkoittaa, että kun kohdistuspyyntö vastaanotetaan, tarkastellaan luetteloa, joka sisältää juuri riittävän suuret lohkot pyynnön täyttämiseksi, ja avoin sijainti palautetaan. pyydetyt ovat saatavilla, suurempi lohko on jaettu kahteen osaan vaatimusten täyttämiseksi.
Ilmaisluettelo voi viitata joko yhteen linkitettyyn muistiosoitteiden luetteloon tai paljon monimutkaisempaan tietorakenteen tyyppiin. voi auttaa nopeuttamaan avoimien muistilohkojen löytämistä lähdekoodin monimutkaisuuden kustannuksella. Linkitetty luettelo voi olla hitaampi kuin erikoistunut lajittelupuu, mutta luo ohjelmointikoodin, joka on paljon helpompi lukea, debug ja muokkaa.
Jotkut ohjelmointikielet ja käyttöjärjestelmät käyttävät erityistä mekanismia, nimeltään roskien keräys. Tämä prosessi voi auttaa ottamaan eri merkinnät vapaalle listalle ja vahvistamaan vapaat tilat niin, että ne ovat vierekkäisiä. pirstoutumisen estäminen ja mahdollistavat suurempien muistilohkojen varaamisen.