У меня возникли проблемы с реализацией моего собственного динамического распределителя памяти, использующего неявный список для отслеживания свободных блоков в c. **** В частности, у меня проблемы с реализацией realloc и , меняющего код с поиска-соответствия / первого соответствия на следующее соответствие. Лучше всего подойдет идеальный вариант, но давайте просто скажем, что сейчас подходит. У меня есть все, что угодно, только эти две вещи ...
подробнее ...
Я пытаюсь реализовать собственную версию динамического распределителя памяти со своими собственными версиями malloc , free и realloc ... There Для отслеживания свободных блоков в динамическом распределителе памяти используются четыре метода. Первый из них, который у меня есть, это неявный список, который использует заголовок. Для нахождения свободного блока в неявном списке есть несколько политик размещения , которые могут быть включены в неявный список. Первый из них называется first fit или find fit, который находится в приведенном ниже коде ... он ищет в списке с начала и выбирает первый свободный блок, который подходит. Следующий метод называется next fit, который у меня возникают проблемы при попытке реализовать, и этот метод похож на first fit, но вместо того, чтобы начинать каждый поиск в начале списка, он начинает каждый поиск, где предыдущий поиск был прерван. Наконец, есть Best fit ... это был бы идеальный метод для меня, но я знаю, что он довольно сложный и довольно трудный, поэтому я возьму только следующую подгонку, но, если есть кто-то, кто знает, как реализовать наилучшую подгонку в неявном списке ПОЖАЛУЙСТА, не стесняйтесь размещать его. Best fit проверяет каждый свободный блок и выбирает свободный блок с наименьшим размером, который подходит ... Я знаю, что для Best fit можно исключить нижние колонтитулы в выделенных блоках ... в основном потому, что они действительно не нужны ... I Я просто не совсем уверен, как это сделать ...
Я понимаю, что это много кода, но я просто хотел поместить все сразу, чтобы ничего не пропустить.
Я оставил место для realloc, который возвращает NULL и находится где-то посередине кода, а find_ fit, который я хочу изменить на метод политики размещения next_fit, находится внизу ...
Любая помощь будет принята с благодарностью ... Спасибо.
Код находится на этом веб-сайте ... извините ... У меня было много проблем с размещением кода здесь ... даже более того, поскольку он такой большой ... Я просто использовал Google, чтобы он выглядел более достоверным. ..
DMA CODE
Я четко обозначил разделы в коде на веб-сайте, чтобы не было проблем с поиском realloc и методов поиска соответствия ...