dune-common
2.8.0
|
A memory pool of objects. More...
#include <dune/common/poolallocator.hh>
Public Types | |
enum | { unionSize , size , alignment = std::lcm(alignof(MemberType), alignof(Reference)) , alignedSize , chunkSize , elements = (chunkSize / alignedSize) } |
typedef T | MemberType |
The type of object we allocate memory for. More... | |
Public Member Functions | |
Pool () | |
Constructor. More... | |
~Pool () | |
Destructor. More... | |
void * | allocate () |
Get a new or recycled object. More... | |
void | free (void *o) |
Free an object. More... | |
void | print (std::ostream &os) |
Print elements in pool for debugging. More... | |
A memory pool of objects.
The memory for the objects is organized in chunks. Each chunks is capable of holding a specified number of objects. The allocated objects will be properly aligned for fast access. Deallocated objects are cached for reuse to prevent memory fragmentation.
T | The type that is allocated by us. |
s | The size of a memory chunk in bytes. |
typedef T Dune::Pool< T, s >::MemberType |
The type of object we allocate memory for.
anonymous enum |
Enumerator | |
---|---|
unionSize | The size of a union of Reference and MemberType. |
size | Size requirement. At least one object has to stored. |
alignment | The alignment that suits both the MemberType and the Reference (i.e. their least common multiple). |
alignedSize | The aligned size of the type. This size is bigger than sizeof of the type and a multiple of the alignment requirement. |
chunkSize | The size of each chunk memory chunk. Will be adapted to be a multiple of the alignment |
elements | The number of element each chunk can hold. |