boost::pool_allocator需要八个静态库
boost::pool_allocator needs eight static libraries?
我试图从Boost库向我的项目添加相当有限的功能,即在"pool_allocator"类的帮助下为池中的小对象分配内存,并发现我需要向项目添加4个调试静态库文件和4个发布静态库文件的依赖关系。例如,像这样的一行需要8个库文件依赖项:
boost::container::vector<int, boost::pool_allocator<int> > v;
有没有一种方法可以在不链接到静态库的情况下使用这些类?(也许是模板参数的某种组合?)
我所读到的关于提升池的内容是:根本不要使用它。该库相当旧(在boost 1.54中,除了2010年编辑的pool_alloc.hpp之外,所有文件的版权都是2000和2001)。您可以在这里查找有关性能的问题(查找James Kanze的答案)。如果你只想使用boost,我建议你使用另一个库。如果您需要自定义分配器,请执行基准测试。
编辑:
来自池文档:
通常,当您需要更有效的方法来进行异常内存控制时,请使用池。
那么问题是什么是不寻常的记忆控制?它满足你记忆的特殊需要吗?Andrei Alexandrescu在"现代C++设计"中写到了内存分配,根据分配和释放模式,可能会有非常不同的要求。但根据这篇论文,他不相信这是一个非常好的章节。
所以对我来说,最后一个问题是,对于内存管理问题,pool是否比std::allocater更好?你必须搞砸它。即使在池中实现了少量逻辑,在你的实现中也可能使用更有效的内存管理算法。顺便说一句,pool的一个bug是"Boost pool library it not header only as claim in documentation"。
识别boost所需的文件,并将它们单独添加到您的项目中,或者向您的项目添加一个.cpp,#include是所需的.cpp。(不推荐)
或
通过脚本生成项目文件,这样添加这样的依赖关系就很容易了。设置这个是一件痛苦的事,但拥有它是很棒的
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- 当我链接两个静态C++库时,我可以在两个主函数库中有两个主要功能吗?
- 具有依赖于实现的成员函数类型的多个静态接口
- 如果两个静态库包含 pugixml objs,如何避免与 pugixml 的“已定义”链接错误
- 八个皇后二维阵列,带有gotos errror
- 指向 N 个数组的静态指针,或指向 N 个静态数组的指针
- 以特定顺序运行八个线程,直到终止
- 一个函数中多个静态变量的静态初始化
- 为什么 2 个静态库不能调用彼此的函数
- 多个静态类成员函数都具有相同的参数和返回值
- CMake TARGET_LINK_LIBRARIES中包含多个静态库
- 为什么sizeof(std::string)只有八个字节
- 如何将多个静态链接库合并到一个dll中,给定每个静态库定义导出的功能(vc++2008)
- 在C++中使用多个静态库解决冲突
- boost::pool_allocator需要八个静态库
- 应用程序有2个静态变量作用域
- 比较两个静态数组
- 为什么我可以在一个文件中无序地初始化两个静态类变量,而不能初始化三个
- 如何将两个静态库链接到一个Code::Blocks项目
- 如何只提供一个静态库在vs2013客户端,如果我使用几个静态库从别人