Raven Core  3.0.0
P2P Digital Currency
Classes | Public Member Functions | Private Attributes | List of all members
Arena Class Reference

#include <lockedpool.h>

Inheritance diagram for Arena:
[legend]

Classes

struct  Stats
 Memory statistics. More...
 

Public Member Functions

 Arena (void *base, size_t size, size_t alignment)
 
virtual ~Arena ()
 
 Arena (const Arena &other)=delete
 
Arenaoperator= (const Arena &)=delete
 
void * alloc (size_t size)
 Allocate size bytes from this arena. More...
 
void free (void *ptr)
 Free a previously allocated chunk of memory. More...
 
Stats stats () const
 Get arena usage statistics. More...
 
bool addressInArena (void *ptr) const
 Return whether a pointer points inside this arena. More...
 

Private Attributes

std::map< char *, size_t > chunks_free
 Map of chunk address to chunk information. More...
 
std::map< char *, size_t > chunks_used
 
char * base
 Base address of arena. More...
 
char * end
 End address of arena. More...
 
size_t alignment
 Minimum chunk alignment. More...
 

Detailed Description

Definition at line 48 of file lockedpool.h.

Constructor & Destructor Documentation

◆ Arena() [1/2]

Arena::Arena ( void *  base,
size_t  size,
size_t  alignment 
)

Definition at line 47 of file lockedpool.cpp.

◆ ~Arena()

Arena::~Arena ( )
virtual

Definition at line 54 of file lockedpool.cpp.

◆ Arena() [2/2]

Arena::Arena ( const Arena other)
delete

Member Function Documentation

◆ addressInArena()

bool Arena::addressInArena ( void *  ptr) const
inline

Return whether a pointer points inside this arena.

This returns base <= ptr < (base+size) so only use it for (inclusive) chunk starting addresses.

Definition at line 90 of file lockedpool.h.

◆ alloc()

void * Arena::alloc ( size_t  size)

Allocate size bytes from this arena.

Returns pointer on success, or 0 if memory is full or the application tried to allocate 0 bytes.

Definition at line 58 of file lockedpool.cpp.

◆ free()

void Arena::free ( void *  ptr)

Free a previously allocated chunk of memory.

Freeing the zero pointer has no effect. Raises std::runtime_error in case of error.

Definition at line 89 of file lockedpool.cpp.

Here is the call graph for this function:

◆ operator=()

Arena& Arena::operator= ( const Arena )
delete

◆ stats()

Arena::Stats Arena::stats ( ) const

Get arena usage statistics.

Definition at line 113 of file lockedpool.cpp.

Member Data Documentation

◆ alignment

size_t Arena::alignment
private

Minimum chunk alignment.

Definition at line 102 of file lockedpool.h.

◆ base

char* Arena::base
private

Base address of arena.

Definition at line 98 of file lockedpool.h.

◆ chunks_free

std::map<char*, size_t> Arena::chunks_free
private

Map of chunk address to chunk information.

This class makes use of the sorted order to merge previous and next chunks during deallocation.

Definition at line 95 of file lockedpool.h.

◆ chunks_used

std::map<char*, size_t> Arena::chunks_used
private

Definition at line 96 of file lockedpool.h.

◆ end

char* Arena::end
private

End address of arena.

Definition at line 100 of file lockedpool.h.


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