[ Nedeljko @ 02.09.2004. 09:12 ] @
Zamislimo da imam rezervisan prostor od n bajtova i da želim da u njemu realizujem dinamičku dodelu (i oslobađanje) memorije. Zna li neko neki dobar algoritam. Dakle, ne zanima me upotreba new i delete operatora, već kako taj mehanizam radi. redosled stvaranja i uništavanja j proizvoljan.
[ chupcko @ 02.09.2004. 09:56 ] @
Pa koristi uvezane liste sa adresama pocetka i kraja bloka.

Jednu listu za slobodne, a drugu za zauzete blokove.

Treba ti malo algoritama oko alociranja i oslobadjanja bloka, i kakvu ces politiku da vodis da bi izbegao fragmentaciju.

Nadji nekog iz 3-e godine , smer R, pa im uzmi svesku ili pitaj ih za lietarturu.
Moze i to da pomogne.
[ Nedeljko @ 02.09.2004. 17:50 ] @
Pa, valjda ima ovde takvih koji mogu da mi preporuče literaturu.
[ leka @ 02.09.2004. 18:08 ] @
Literatura: Mastering Algorithms in C, Kyle Loudon (podnaslov: Useful Techniques from Sorting to Encryption). Strana 65 na kojoj je, na kraju poglavlja o listama (linked lists, covek objasnio pojam Virtualne Memorije i kako se ona pravi pomocu povezanih listi. Uz sve to prilozen je i sors sa kodom za alociranje frejma, oslobadjanje memorije koju frejm zauzme prilikom inicijalizovanja, itd.
Napominjem da virtualna memorija nema direktne veze sa temom. Ali je princip maltene isti kao ono sto tebi treba...
[ bkaradzic @ 02.09.2004. 20:01 ] @
Citat:
Nedeljko: Zna li neko neki dobar algoritam. Dakle, ne zanima me upotreba new i delete operatora, već kako taj mehanizam radi. redosled stvaranja i uništavanja j proizvoljan.


Pogledaj ovaj sajt (i teorija i implementacija):
http://gee.cs.oswego.edu/dl/html/malloc.html

Inače ja sam koristio "Doug Lea's Malloc" u dva projekta i na 4 različite platforme i stvarno je odličan. Vrlo je lako podesiti ga za specifičnu upotrebu, nema puno problema oko prebacivanja na druge platforme, i bolji je od default Microsoft-og malloc-a na Xbox-u i default Sony-jevog na PS2 (oba fragmentiraju memoriju više od dlmalloc).

Branimir