Распределение памяти друзей - PullRequest
0 голосов
/ 06 мая 2018

У меня есть массив размером n , который представляет мою основную память. Я не могу использовать оператор new, у меня есть доступ только к этой памяти, поэтому каждая структура данных должна использовать только этот массив для хранения данных. Я пытаюсь создать распределитель памяти, который сможет быстро найти свободные части этой памяти (массива), а также освободить их. Я хочу построить древовидную структуру на этом массиве - распределение памяти приятеля - но я борюсь с пониманием нескольких концепций.

Как именно система собеседников ищет свободный кусок памяти, используя двоичное дерево?

Как мне хранить это дерево в массиве?

Как я могу создать новые узлы этого дерева (если я просто зарезервирую достаточно места для своего дерева в начале программы или "выделю" его динамически - но как это сделать просто)?

У меня вроде есть ответы на эти вопросы, но я изо всех сил пытаюсь полностью понять это. Буду признателен за каждый четкий ответ и помощь. Спасибо.

1 Ответ

0 голосов
/ 07 мая 2018
  1. Взгляните на двоичную кучу . Эта структура представляет собой дерево внутри массива.
  2. Взгляните на маленький распределитель объектов Александреску из его книги . Во второй главе (AFAIR) он описывает практический подход для встраивания структур длиной ~ 8- 128 байт во внешний байтовый массив без издержек.
...