А чем это отличается от распределения heap-а памяти? В простейшем случае, система хранит список свободных блоков памяти (в виде пары - адрес, длина), и когда новый блок освобождается, должна вставить его в список свободных. И именно так, как требуется в задаче, т.е. присоединить к уже имеющимся, спереди и сзади. Решение довольно простое.
в случае хипа задача чуть проще. Освобождаемый кусок памяти никогда не пересекается с уже свободными. Он может только прилегать к уже свободным. А в общем случае новый интервал может не только прилегать, но и пересекаться или даже перекрывать существующие. Но это таки детали, которые не сильно влияют на алгоритм (вернее на лагоритм не влияют вообще, только на реализацию).
Comments 19
Решение довольно простое.
Reply
Reply
Reply
Reply
Leave a comment