Slobodni popis je struktura podataka koja sadrži adrese memorijskih lokacija računala koje su dostupne za korištenje pokrenutom programu kada koristi dinamičku dodjelu memorije. Popis postaje nužan kada program mora dodijeliti prostor iz područja slobodne memorije zvane hrpa. Implementacija slobodnog popisa može biti jednostavna povezana lista ili može biti složenija struktura podataka kao što je stablo sortiranja Većina računalnih programskih jezika visoke razine automatski obrađuje popis slobodnih, uklanjajući potrebu za ručnim upravljanjem.
Kada program zahtijeva prostor za pohranjivanje informacija tijekom izvođenja programa, mora zahtijevati određenu količinu memorije od temeljnog operativnog sustava. Lokacije memorijskih blokova koji se mogu koristiti pohranjene su u slobodnom popis. Da bi dodjela bila uspješna, količina tražene memorije mora biti dostupna u jednom ili više ovih blokova. Kada se vrati pokazivač na odgovarajuću memorijsku lokaciju, taj se element popisa uklanja.
Nakon što program završi korištenjem memorije, može je de-alocirati. To uključuje prosljeđivanje pokazivača na memorijski blok natrag u popis slobodnih, gdje će postati dostupan sljedeći put kada se dodjeljivanje izvrši Moguće je da dodjela memorije ne uspije jer je popis prazan ili zato što nema dostupnih memorijskih blokova dovoljno velikih da ispuni zahtjev programa.
Najjednostavniji oblik upravljanja memorijom naziva se sustav prvog uklapanja. Ovaj sustav održava jedan popis slobodnih memorijskih lokacija. Kada se pošalje zahtjev za memorijom, lista se prelazi i prvi blok koji je dovoljno velik se vraća. Ako je blok više od dva puta veći od tražene veličine, tada se prepolovi, a neiskorištena polovica se vraća na popis. Ova metoda mijenja jednostavno kodiranje za rizik od fragmentiranih memorijskih područja koja se možda nikada neće vratiti na popis.
Različiti oblik upravljanja memorijom naziva se sustav raspodjele prijatelja. Za razliku od prvog fit sustava, dodjela prijatelja drži nekoliko slobodnih popisa, od kojih svaki sadrži otvorene blokove samo jedne određene veličine. To znači da kada se primi zahtjev za dodjelu, pregledava se popis koji sadrži blokove koji su dovoljno veliki da ispune zahtjev i vraća se otvorena lokacija. Ako nema slobodnih blokova koji su manji od dvostruke veličine Zatraženi su dostupni, veći blok se dijeli na dva dijela kako bi se ispunili zahtjevi.
Izraz “slobodni popis” može se odnositi ili na jedan povezani popis memorijskih adresa ili se može odnositi na mnogo složeniji tip strukture podataka. Različite vrste stabala sortiranja, ako se drže jednostavnim i uravnoteženim, može pomoći povećati brzinu pronalaženja otvorenih memorijskih blokova na račun kompliciranja izvornog koda. Povezani popis može biti sporiji od specijaliziranog stabla sortiranja, ali stvara programski kod koji je daleko lakši za čitanje, otklanjanje pogrešaka i modificiranje.
Neki programski jezici i operativni sustavi koriste poseban mehanizam koji se zove prikupljanje smeća. Ovo je proces koji može pomoći da se različiti unosi na popisu slobodnih objedine i konsolidiraju tako da budu susjedni. učinak sprječavanja fragmentacije i dopuštanja dodjeljivanja većih blokova memorije.