A mono allocator, that incorporates a member of templated size TCapacityInKB, which is used as the initial buffer for allocation. The class is intended to be instantiated by local variables, hence using stack memory.
When the initial buffer is exhausted, further buffers will be heap allocated.
Note that the usual type alias given in namespace alib, in this case misses the leading "T", and is given with LocalAllocator. Besides that, further aliases that denote specific stack sizes are provided with LocalAllocator1K, LocalAllocator2K, LocalAllocator4K, LocalAllocator8K, LocalAllocator16K, LocalAllocator32K, and LocalAllocator64K.
| TCapacityInKB | The size of the internal buffer in kilobytes. |
| TAllocator | The allocator type that parent TMonoAllocator should be chained to. Defaults to HeapAllocator. |
Definition at line 35 of file localallocator.inl.
Public Method Index: | |
| TLocalAllocator (TAllocator &pAllocator, unsigned pBufferGrowthInPercent=200) | |
| TLocalAllocator (unsigned pBufferGrowthInPercent=200) | |
| ~TLocalAllocator () | |
| Destructor. Calls destructWithExternalBuffer. | |
| MonoAllocator & | AsMonoAllocator () |
| Public Method Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| TMonoAllocator (const char *dbgName, detail::Buffer *pInitialBuffer, size_t pInitialBufferSizeInKB, unsigned pBufferGrowthInPercent=200) | |
| TMonoAllocator (const char *dbgName, lang::HeapAllocator &pAllocator, detail::Buffer *pInitialBuffer, size_t pInitialBufferSizeInKB, unsigned pBufferGrowthInPercent=200) | |
| TMonoAllocator (const char *dbgName, lang::HeapAllocator &pAllocator, size_t pInitialBufferSizeInKB, unsigned pBufferGrowthInPercent=200) | |
| TMonoAllocator (const char *dbgName, size_t pInitialBufferSizeInKB, unsigned pBufferGrowthInPercent=200) | |
| TMonoAllocator (const char *dbgName, std::nullptr_t) noexcept | |
| TMonoAllocator (const TMonoAllocator &)=delete | |
| Not copyable. | |
| TMonoAllocator (TMonoAllocator &&)=delete | |
| Not movable. | |
| ~TMonoAllocator () | |
| Destructor. Disposes all memory allocated with ChainedAllocator. | |
| void * | allocate (size_t size, size_t alignment) |
| constexpr bool | allowsMemSplit () noexcept |
| void | dbgAcknowledgeIncreasedAllocSize (void *, TSize) const |
| void | dbgCheckMemory (void *mem, TSize size) |
| const detail::Buffer * | DbgGetBuffer () const noexcept |
| detail::Buffer * | DbgGetBuffer () noexcept |
| const DbgStatistics & | DbgGetStatistics () const |
| void | DbgLock (bool onOff) noexcept |
| void | destructWithExternalBuffer () |
| void | free (void *mem, size_t size) const |
| void | GetStatistics (Statistics &result) |
| bool | IsInitialized () const noexcept |
| lang::AllocatorInterface< TMonoAllocator > | operator() () |
| void * | reallocate (void *mem, size_t oldSize, size_t newSize, size_t alignment) |
| void | Reset (size_t firstObjectSize, size_t firstObjectAlignment) |
| void | Reset (Snapshot snapshot=Snapshot()) |
| Snapshot | TakeSnapshot () |
| Public Method Index: inherited from alib::lang::AllocatorMember< lang::HeapAllocator > | |
| AllocatorMember () | |
| AllocatorInterface< lang::HeapAllocator > | AI () const noexcept |
| lang::HeapAllocator & | GetAllocator () const noexcept |
Protected Type Index: | |
| using | base = TMonoAllocator<TAllocator> |
| Shortcut to our base type. | |
| Protected Type Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| using | allocMember |
| The type of the base class that stores the chained allocator. | |
Protected Field Index: | |
| void * | localMemory [TCapacityInKB *1024/sizeof(void *)] |
| Internal memory passed as a first buffer to base class MonoAllocator. | |
| Protected Field Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| detail::Buffer * | buffer |
| The actual buffer. Contains a link to previously allocated buffers. | |
| unsigned | bufferGrowthInPercent |
| bool | dbgLock |
| DbgStatistics | dbgStats |
| size_t | nextBuffersUsableSize |
| detail::Buffer * | recyclables |
| The list of buffers that are to be recycled. | |
| Protected Field Index: inherited from alib::lang::AllocatorMember< lang::HeapAllocator > | |
| lang::HeapAllocator * | allocator |
| The allocator stored. | |
Additional Inherited Members | |
| Public Type Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| using | ChainedAllocator |
| Public Type Index: inherited from alib::lang::AllocatorMember< lang::HeapAllocator > | |
| using | AllocatorType |
| Exposes the allocator type. | |
| Public Static Field Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| static constexpr size_t | MAX_ALIGNMENT |
| static constexpr size_t | MIN_ALIGNMENT |
| Public Static Method Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| static TMonoAllocator * | Create (const char *dbgName, lang::HeapAllocator &pAllocator, size_t initialBufferSizeInKB, unsigned bufferGrowthInPercent=200) |
| static TMonoAllocator * | Create (const char *dbgName, size_t initialBufferSizeInKB, unsigned bufferGrowthInPercent=200) |
| Public Field Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| lang::Placeholder< lang::DbgCriticalSections > | DbgCriticalSectionsPH |
| const char * | DbgName |
| Protected Method Index: inherited from alib::monomem::TMonoAllocator< lang::HeapAllocator > | |
| char * | nextBuffer (size_t size, size_t alignment) |
|
protected |
Shortcut to our base type.
Definition at line 39 of file localallocator.inl.
|
protected |
Internal memory passed as a first buffer to base class MonoAllocator.
Definition at line 42 of file localallocator.inl.
|
inline |
Default constructor.
| pBufferGrowthInPercent | Optional growth factor in percent, applied to each allocation of a next buffer size in respect to its previous size. Defaults to 200, which doubles buffer size with each next internal buffer allocation. |
Definition at line 50 of file localallocator.inl.
|
inline |
Constructor that accepts a different underlying allocator
| pAllocator | The allocator to use for allocation of additional buffers. |
| pBufferGrowthInPercent | Optional growth factor in percent, applied to each allocation of a next buffer size in respect to its previous size. Defaults to 200, which doubles buffer size with each next internal buffer allocation. |
Definition at line 62 of file localallocator.inl.
|
inline |
Destructor. Calls destructWithExternalBuffer.
Definition at line 70 of file localallocator.inl.
|
inline |
Convenience method that returns *this statically cast to base type MonoAllocator. This is primarily needed in situations where overload resolution of methods fails, if not exactly this base type is given. A prominent sample for this is the constructor of type AStringMA.
Definition at line 77 of file localallocator.inl.