#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: