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

#c #memory-management #dynamic-memory-allocation

#c #управление памятью #динамическое выделение памяти

Вопрос:

Я пытаюсь найти библиотеку управления памятью для C , которая выделяла бы из предварительно выделенного блока памяти, который я предоставляю для его инициализации. После того, как я закончу, я закрою распределитель (и объекты) и освобожу предварительно выделенный блок

что-то подобное уже существует?

Комментарии:

1. кажется, он работает только с объектами одинакового размера

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

Ответ №1:

Таких распределителей много. dlmalloc — один из самых популярных (и у нас он хорошо работал). У Дага Ли есть malloc.c и malloc.h, доступные для загрузки, и есть также несколько производных от его исходного кода, которые упакованы, возможно, более удобными способами, такими как ptmalloc.

Комментарии:

1. спасибо, ptmalloc README сообщает, что их версия nothreads вышла из строя, что очень жаль, поскольку я надеюсь использовать пользовательский диспетчер памяти, который предполагает один поток (без накладных расходов на блокировку)

2. @lurscher Тогда базовый dlmalloc (malloc отDoug Lea.c) может быть тем, что вам нужно; его код блокировки потоков легче удалить.

Ответ №2:

возможно, вас заинтересуют распределители loki:

http://sourceforge.net/projects/loki-lib/