boost::pool_allocator нужны восемь статических библиотек?

Я попытался добавить в свой проект довольно ограниченную функциональность из библиотеки Boost, а именно выделить память для небольших объектов из пула с помощью класса 'pool_allocator', и обнаружил, что мне нужно добавить в проект зависимости от 4 отладочных статических библиотек. файлы и до 4 выпуска статических файлов библиотеки. Т.е. 8 зависимостей файла библиотеки необходимы для одной строки, например:

boost::container::vector<int, boost::pool_allocator<int> > v;

Есть ли способ использовать эти классы без ссылки на статические библиотеки? (Может быть, определенная комбинация параметров шаблона?)

2 ответа

Решение

Все, что я прочитал о буст-пуле, это: не используйте его вообще. Библиотека довольно старая (в boost 1.54 все файлы имеют авторские права 2000 и 2001, кроме pool_alloc.hpp, который был отредактирован в 2010 году). Здесь вы можете найти вопрос о производительности (ищите ответ Джеймса Канзе). Если вы хотите использовать только boost, я бы предложил использовать другую библиотеку. Если вам нужен собственный распределитель, сделайте тесты.

Редактировать:

Из пулов документа:

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

Так что q ное это то, что именно необычный контроль памяти? Удовлетворяет ли это вашу особую потребность в памяти? Андрей Александреску написал в "Современном C++ Design" о распределении памяти и о том, что могут быть очень разные требования в зависимости от моделей выделения и освобождения. Но согласно этой статье он не уверен, что это была очень хорошая глава.

Так что для меня последний вопрос, является ли пул лучше, чем std::allocator для управления памятью проблем? Вы должны испортить это. Даже если в пуле реализована небольшая логика, в вашей реализации могут быть более эффективные алгоритмы управления памятью. Кстати, одна из ошибок пула - "Boost pool library - это не заголовок только как заявлено в документации".

Определите файлы, запрашиваемые из boost, и добавьте их в свой проект по отдельности, или добавьте.cpp в свой проект, который # включает в себя требуемые.cpp. (Не очень рекомендуется)

или же

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

Другие вопросы по тегам