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