boost :: pool_allocator需要八个静态库吗?

时间:2013-07-16 07:04:55

标签: c++ memory-management boost allocation boost-pool

我试图在Boost库中添加我的项目相当有限的功能,即在'pool_allocator'类的帮助下从池中为小对象分配内存,并发现我需要将项目依赖项添加到4调试静态库文件和4个版本的静态库文件。即单行需要8个库文件依赖项,如下所示:

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

有没有办法在不链接到静态库的情况下使用这些类? (也许是模板参数的某种组合?)

2 个答案:

答案 0 :(得分:3)

我读到的关于增强池的全部内容是:根本不使用它。该库相当陈旧(在boost 1.54中,所有文件都有版权2000和2001,但pool_alloc.hpp除外,该版本于2010年编辑)您可以查看here有关性能的问题(查找James Kanze的答案)。如果你只想使用boost,我建议使用另一个库。如果您需要自定义分配器,请执行基准测试。

编辑:

来自Pools docu

  

通常,在需要更有效的方法来执行异常内存控制时,请使用池。

那么qustion究竟是什么异常的内存控制?它是否满足您对记忆的特殊需求? Andrei Alexandrescu在“现代C ++设计”中写过关于内存分配的内容,根据分配解除分配模式,可能会有非常不同的要求。但根据这个paper,他不相信这是一个非常好的章节。

所以对我来说,最后一个问题是,对于内存管理问题,哪个池比std :: allocator更好?你必须弄乱它。即使在池中实现了litle逻辑,也可能有更高效的实现内存管理算法。顺便说一下,池中的一个错误是"Boost pool library it not header only as claimed in documentation"

答案 1 :(得分:0)

确定从boost中获取的文件,并将它们单独添加到项目中,或者在项目中添加一个.cpp,其中包括所需的.cpp。 (不是真的推荐)

通过脚本生成项目文件,以便轻松添加此类依赖项。设置这个是一件痛苦的事情,但有了它很棒