Получение ошибки сегментации при создании собственной реализации mallocLinux

Ответить
Anonymous
 Получение ошибки сегментации при создании собственной реализации malloc

Сообщение Anonymous »


В свободное время я участвую в программе дистанционного обучения, чтобы больше узнать о программировании низкого уровня. Это немного пугает, поскольку я впервые глубоко погружаюсь в ОС, создавая свою собственную версию 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, выделяющей память?

Я новичок в таких вещах и понятия не имею, как вообще проводить отладку. Пожалуйста, помогите или дайте мне указания, как решить такие проблемы.

Дайте мне знать, если вам понадобится что-нибудь еще с моей стороны.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»