[英]Using boost::pool to manage the memory allocations in a std::vector
我想要一個std::vector
對象,使用boost::pool
分配對象。 這是正確的:
class MyClass
{
private:
double data;
public:
MyClass(double d) : data(d) { }
};
int main()
{
std::vector<MyClass, boost::fast_pool_allocator<MyClass> > vect;
vect.push_back(4.5);
vect.push_back(9.8); //Are these being stored in a pool now?
return 0;
}
這段代碼有效,但我不完全確定原因。 我對分配器的概念很陌生,但如果我理解正確,這會告訴std::vector
使用池而不是默認分配器,因此在向量中創建的任何元素都將從池中創建。
我不太確定的是:
游泳池在哪里?
我將如何直接訪問池(例如釋放內存)?
fast_pool_allocator
是否包含池,或者我是否需要單獨創建池並以某種方式告訴分配器使用它。
在boost::fast_pool_allocator
的情況下,池是分配器實現所擁有的單例。 所以你不需要單獨創建任何東西。
您可以通過std::vector
get_allocator
函數訪問allocator,也可以在boost::fast_pool_allocator
使用靜態函數。
查看boost參考 ,所有人都使用分配器的單例實例。 您可以使用它來分配內存以及釋放它,只需創建一個本地boost::fast_pool_allocator
或boost::pool_allocator
對象即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.