реализация malloc из буфера фиксированного размера - PullRequest
10 голосов
/ 11 января 2011

Мне нужна общая реализация malloc, которая использует один большой буфер фиксированного размера. Нечто похожее на « Zero-malloc распределитель памяти » имеет SQLite. Знаете ли вы о таких реализациях? Он должен быть легким и портативным, чтобы его можно было использовать для встраиваемых приложений.

Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 11 января 2011

Два предложения:

  1. ЕСЛИ вам нужно что-то качественное и хорошо протестированное, просто позаимствуйте распределитель SQLite. Исходный код SQLite очень хорошо написан, задокументирован, чрезвычайно хорошо протестирован и имеет очень открытую лицензию с открытым исходным кодом.
  2. ЕСЛИ вам нужно что-то маленькое и простое, для изучения или использования во встроенной среде, рассмотрите эту реализацию [бесстыдный плагин!] - всего 350 LOC закомментированного кода C .
4 голосов
/ 11 января 2011

Исходный код SQLite находится в свободном доступе.Если вам нравится конкретная реализация, почему бы не использовать ее?

1 голос
/ 11 января 2011

Большинство современных malloc реализаций работают за счет выделения большого куска памяти, полученного из ОС.Если этот блок заканчивается, malloc запрашивает у ОС новый большой блок.

Вы можете основывать свою собственную реализацию на существующей реализации malloc (например, glibc one)и вместо получения блока из ОС вы используете один статический буфер.Когда это закончится, malloc начнет давать сбой, так же, как это происходит, когда ОС не может предоставить какие-либо новые блоки.

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