В свободное время я участвую в программе дистанционного обучения, чтобы больше узнать о программировании низкого уровня. Это немного пугает, поскольку я впервые глубоко погружаюсь в ОС, создавая свою собственную версию malloc, поскольку хочу освоить более глубокие методы распределения памяти. Я использую явный список свободных мест для выделения памяти, для чего я сослался на этот репозиторий: https://github.com/HarshTrivedi/malloc/blob/master/mm.c
Мне понравился этот репозиторий, потому что для моего задания он гораздо больше похож.
Для моего проекта я позаимствовал идеи из функции mm.c из этого репозитория и использовал их для своей собственной среды. вот ссылка на мой код https://onlinegdb.com/ELwPIqEtb. Теперь, при запуске тестового файла с помощью make test и использования отладчика gdb, я обнаружил, что он выдает ошибку сегментации.
Ниже приведен снимок экрана:

В строке 314: if (extend_heap(4) == NULL){ , код ломается и выдает ошибку сегментации в строке 626: PUT(FTRP(ptr), PACKAALOCATIONAllocation(size, 0));. Мы думаем, что это может быть проблема с функцией Extend_heap, выделяющей память?
Я новичок в таких вещах и понятия не имею, как вообще проводить отладку. Пожалуйста, помогите или дайте мне указания, как решить такие проблемы.
Дайте мне знать, если вам понадобится что-нибудь еще с моей стороны.
Мобильная версия