крошечный менеджер памяти - PullRequest
2 голосов
/ 08 апреля 2009

У меня есть кусок памяти, скажем, NN'MB. Мне нужен собственный менеджер памяти, который будет выделяться только из этой памяти. Диспетчер памяти должен быть способен выделять, освобождая с помощью уже доступного фрагмента. Было бы здорово, если бы он также мог справляться с фрагментацией.

Отредактировано: я ищу какой-то открытый исходный код в C или есть какой-то API, такой как malloc и бесплатный.

Ответы [ 4 ]

4 голосов
/ 08 апреля 2009

Возможность «справиться» с фрагментацией - довольно крутое требование. Если вы имеете в виду, что менеджер должен иметь возможность фрагментировать память, это означает, что у него не может быть стандартного C malloc() API. Вам нужен косвенный API, в котором на выделение памяти ссылаются не фактические адреса с прямой ссылкой, а что-то более абстрактное.

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

Конечно, принуждение приложения к косвенному использованию памяти означает разрыв многих распространенных идиом и API-интерфейсов, так как ожидание свободного использования указателей распространено в C.

3 голосов
/ 08 апреля 2009

Я настоятельно рекомендую проверить выделение памяти Андрея Александреску на основе политик. Точная настройка управления памятью

Есть также видео с выступлением , которое он сделал на эту тему, также настоятельно рекомендуется в качестве учебного ресурса.

1 голос
/ 10 апреля 2009

см. Glib malloc () и уменьшение памяти

http://live.gnome.org/MemoryReduction

1 голос
/ 08 апреля 2009

Должно ли это быть C? Распределитель Loki в C ++ может сделать это

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