Структура даних для динамічного розподілу пам'яті


12

Подумайте про модель зондування клітинок. Чи існує структура даних, яка може виділяти суміжні шматки пам'яті будь-якої довжини (наприклад, malloc у С) та звільняти їх, уникаючи сегментації пам'яті, і виконує кожну операцію у найгіршому випадку детермінованого часу O (log n), де n загальний об'єм пам'яті?

Уникаючи сегментації пам'яті, я маю на увазі, що якщо загальна кількість вільних клітин є F, то я повинен мати можливість виділити суміжний сегмент F клітин або приблизно F клітин.

Відповіді:


6

Навіть без обмеженого часу "неможливо уникнути сегментації пам'яті", якщо ви не зможете перемістити виділені об'єкти навколо, як у компактному сміттєзбірнику. Дивіться Робсона "Межі деяких функцій щодо розподілу динамічного зберігання", де видно, що для розподілу байтів у блоках розміром між n та N потрібно Ω ( m log ( N / n ) ) байтів пам'яті.мнNΩ(мжурнал(N/н))

Крім того, система приятелів досягає цієї межі і може бути виконана в логарифмічний час.


Дякую за довідку. Я дозволяю переміщувати виділені об'єкти навколо (інакше це виглядає досить легко). Чи застосовується нижня межа, яку ви згадуєте?
Ману

м

О(журналн)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.