Я читаю о реализации malloc Дуга Ли (dlmalloc) из http://gee.cs.oswego.edu/dl/html/malloc.html.
Я понял, что порции содержат размер и другую информацию вместе с пространством памяти. Чанки хранятся в бинах (в форме связанного списка) в соответствии с размером.
Всякий раз, когда malloc вызывается с 'n' байтами, он ищет чанк в подходящем бине (в котором хранится размер 'n'). чанки) & если найден, чанк удаляется из бункера.
И всякий раз, когда вызывается free, он вставляет блок, который должен быть освобожден как чанк, в подходящий бункер.
Итак, мои вопросы-
Вначале, когда вся память кучи нераспределена / свободна, все ячейки должны быть пустыми, верно? (Поскольку только свободная функция вставляет куски в ячейки)
Если это так, как (откуда) будет выделен первый блок памяти?
Может ли кто-нибудь подробно объяснить «назначенную жертву» (Д.В. ) чанк и топ чанк? Какой будет DV chunk во время первого выделения?