boostメモリプール(pool)
template<typename UserAllocator = ... >
class pool
{
public:
// size_type , ( )
explicit pool(size_type requested_size);
~pool();
// requested_size
size_type get_requested_size()const;
// void* , requested_size, 0,
void * malloc();//
void * ordered_malloc();//
void * ordered_malloc(size_type n);// n
bool is_from(void * chunk)const;// chunk
/* */
// , free(), ,
void free(void *chunk);
void ordered_free(void * chunk);
void free(void *chunk,size_type n);
void ordered_free(void *chunk,size_type n);
// ,
bool release_memory();
// pool , , purge_memory()
bool purge_memory();
};
poolの使い方
#include<boost/pool/pool.hpp>
#include<iostream>
#include<cassert>
using namespace boost;
using namespace std;
int main()
{
pool<> p1(sizeof(int));
cout << p1.get_requested_size() << endl;//4
// , , , , object_pool
int *p = (int *)p1.malloc();
if(NULL==p){
cout << " "<<endl;
return 0;
}
double *d = (double *)p1.malloc();
cout << p1.is_from(d) << endl;
assert(p1.is_from(d));
p1.free(p);
for(int i=0;i<100;++i){
p1.ordered_malloc(10);
}
}