5

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、またはプールを個別に作成し、アロケーターにそれを使用するように指示する必要がありますか。

4

2 に答える 2