簡體   English   中英

使用boost :: pool來管理std :: vector中的內存分配

[英]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_allocatorboost::pool_allocator對象即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM