Первое распределение с использованием dlmalloc - PullRequest
1 голос
/ 27 октября 2019

Я читаю о реализации malloc Дуга Ли (dlmalloc) из http://gee.cs.oswego.edu/dl/html/malloc.html.

Я понял, что порции содержат размер и другую информацию вместе с пространством памяти. Чанки хранятся в бинах (в форме связанного списка) в соответствии с размером.

Всякий раз, когда malloc вызывается с 'n' байтами, он ищет чанк в подходящем бине (в котором хранится размер 'n'). чанки) & если найден, чанк удаляется из бункера.

И всякий раз, когда вызывается free, он вставляет блок, который должен быть освобожден как чанк, в подходящий бункер.

Итак, мои вопросы-

  1. Вначале, когда вся память кучи нераспределена / свободна, все ячейки должны быть пустыми, верно? (Поскольку только свободная функция вставляет куски в ячейки)

  2. Если это так, как (откуда) будет выделен первый блок памяти?

  3. Может ли кто-нибудь подробно объяснить «назначенную жертву» (Д.В. ) чанк и топ чанк? Какой будет DV chunk во время первого выделения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...