#include <Allocator.h>

Inheritance diagram for Mem::Allocator:
Collaboration diagram for Mem::Allocator:

Public Member Functions

 Allocator (const char *const aLabel, const size_t sz)
 
void relabel (const char *const aLabel)
 
virtual size_t getStats (PoolStats &)=0
 
void * alloc ()
 provide (and reserve) memory suitable for storing one object More...
 
void freeOne (void *obj)
 return memory reserved by alloc() More...
 
int getInUseCount () const
 the difference between the number of alloc() and freeOne() calls More...
 
void zeroBlocks (const bool doIt)
 
virtual void setChunkSize (size_t)
 XXX: Misplaced – not all allocators have a notion of a "chunk". See MemPoolChunked. More...
 
virtual bool idleTrigger (int shift) const =0
 
virtual void clean (time_t maxage)=0
 
void flushCounters ()
 

Static Public Member Functions

static size_t RoundedSize (const size_t minSize)
 

Public Attributes

size_t countAlloc = 0
 the number of calls to Mem::Allocator::alloc() since last flush More...
 
size_t countSavedAllocs = 0
 the number of malloc()/calloc() calls avoided since last flush More...
 
size_t countFreeOne = 0
 the number of calls to Mem::Allocator::freeOne() since last flush More...
 
const char * label
 brief description of objects returned by alloc() More...
 
const size_t objectSize
 the size (in bytes) of objects managed by this allocator More...
 
PoolMeter meter
 statistics tracked for this allocator More...
 

Static Public Attributes

static const size_t FlushLimit = 1000
 Flush counters to 'meter' after flush limit allocations. More...
 

Protected Member Functions

virtual void * allocate ()=0
 *alloc() More...
 
virtual void deallocate (void *)=0
 freeOne(void *) More...
 

Protected Attributes

bool doZero = true
 

Detailed Description

An interface for memory allocators that deal with fixed-size objects. Allocators may optimize repeated de/allocations using memory pools.

Definition at line 21 of file Allocator.h.

Constructor & Destructor Documentation

◆ Allocator()

Mem::Allocator::Allocator ( const char *const  aLabel,
const size_t  sz 
)
inline

Definition at line 27 of file Allocator.h.

Member Function Documentation

◆ alloc()

◆ allocate()

virtual void * Mem::Allocator::allocate ( )
protectedpure virtual

*alloc()

Implemented in MemPoolChunked, and MemPoolMalloc.

Referenced by alloc().

◆ clean()

virtual void Mem::Allocator::clean ( time_t  maxage)
pure virtual

Implemented in MemPoolChunked, and MemPoolMalloc.

◆ deallocate()

virtual void Mem::Allocator::deallocate ( void *  )
protectedpure virtual

freeOne(void *)

Implemented in MemPoolChunked, and MemPoolMalloc.

Referenced by freeOne().

◆ flushCounters()

void Mem::Allocator::flushCounters ( )
inline

◆ freeOne()

void Mem::Allocator::freeOne ( void *  obj)
inline

◆ getInUseCount()

◆ getStats()

virtual size_t Mem::Allocator::getStats ( PoolStats )
pure virtual

fill the given object with statistical data about pool

Returns
Number of objects in use, ie. allocated.

Implemented in MemPoolChunked, and MemPoolMalloc.

◆ idleTrigger()

virtual bool Mem::Allocator::idleTrigger ( int  shift) const
pure virtual

Implemented in MemPoolChunked, and MemPoolMalloc.

◆ relabel()

void Mem::Allocator::relabel ( const char *const  aLabel)
inline

change the allocator description if we were only able to provide an approximate description at object construction time

Definition at line 34 of file Allocator.h.

References label.

◆ RoundedSize()

static size_t Mem::Allocator::RoundedSize ( const size_t  minSize)
inlinestatic
Parameters
minSizeMinimum size needed to be allocated.
Return values
nSmallest size divisible by sizeof(void*)

Definition at line 93 of file Allocator.h.

Referenced by GetStrPool().

◆ setChunkSize()

virtual void Mem::Allocator::setChunkSize ( size_t  )
inlinevirtual

Reimplemented in MemPoolChunked.

Definition at line 65 of file Allocator.h.

Referenced by Mem::Init().

◆ zeroBlocks()

void Mem::Allocator::zeroBlocks ( const bool  doIt)
inline
See also
doZero

Definition at line 62 of file Allocator.h.

References doZero.

Referenced by Mem::AllocatorProxy::getAllocator(), GetStrPool(), and memDataInit().

Member Data Documentation

◆ countAlloc

size_t Mem::Allocator::countAlloc = 0

Definition at line 98 of file Allocator.h.

Referenced by alloc(), and flushCounters().

◆ countFreeOne

size_t Mem::Allocator::countFreeOne = 0

Definition at line 104 of file Allocator.h.

Referenced by flushCounters(), and freeOne().

◆ countSavedAllocs

size_t Mem::Allocator::countSavedAllocs = 0

Definition at line 101 of file Allocator.h.

Referenced by MemPoolMalloc::allocate(), flushCounters(), and MemPoolChunked::get().

◆ doZero

bool Mem::Allocator::doZero = true
protected

Whether to zero memory on initial allocation and on return to the pool.

We do this on some pools because many object constructors are/were incomplete and we are afraid some code may use the object after free. When possible, set this to false to avoid zeroing overheads.

Definition at line 130 of file Allocator.h.

Referenced by MemChunk::MemChunk(), MemPoolMalloc::allocate(), MemPoolMalloc::deallocate(), MemPoolChunked::push(), and zeroBlocks().

◆ FlushLimit

const size_t Mem::Allocator::FlushLimit = 1000
static

Definition at line 25 of file Allocator.h.

Referenced by alloc().

◆ label

const char* Mem::Allocator::label

Definition at line 109 of file Allocator.h.

Referenced by MemPoolChunked::getStats(), MemPoolMalloc::getStats(), and relabel().

◆ meter

◆ objectSize


The documentation for this class was generated from the following file:

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors