![]()  | 
  
    BSHA3
    0.17.99
    
   P2P Blockchain, based on Bitcoin 
   | 
 
#include <lockedpool.h>
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 | |
| Arena & | operator= (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 Types | |
| typedef std::multimap< size_t, char * > | SizeToChunkSortedMap | 
| typedef std::unordered_map< char *, SizeToChunkSortedMap::const_iterator > | ChunkToSizeMap | 
Private Attributes | |
| SizeToChunkSortedMap | size_to_free_chunk | 
| Map to enable O(log(n)) best-fit allocation, as it's sorted by size.  More... | |
| ChunkToSizeMap | chunks_free | 
| Map from begin of free chunk to its node in size_to_free_chunk.  More... | |
| ChunkToSizeMap | chunks_free_end | 
| Map from end of free chunk to its node in size_to_free_chunk.  More... | |
| std::unordered_map< char *, size_t > | chunks_used | 
| Map from begin of used chunk to its size.  More... | |
| char * | base | 
| Base address of arena.  More... | |
| char * | end | 
| End address of arena.  More... | |
| size_t | alignment | 
| Minimum chunk alignment.  More... | |
Definition at line 48 of file lockedpool.h.
      
  | 
  private | 
Definition at line 96 of file lockedpool.h.
      
  | 
  private | 
Definition at line 92 of file lockedpool.h.
| Arena::Arena | ( | void * | base, | 
| size_t | size, | ||
| size_t | alignment | ||
| ) | 
Definition at line 46 of file lockedpool.cpp.
      
  | 
  virtual | 
Definition at line 55 of file lockedpool.cpp.
      
  | 
  delete | 
      
  | 
  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.
| 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 59 of file lockedpool.cpp.
| 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 94 of file lockedpool.cpp.
| Arena::Stats Arena::stats | ( | ) | const | 
Get arena usage statistics.
Definition at line 132 of file lockedpool.cpp.
      
  | 
  private | 
Minimum chunk alignment.
Definition at line 110 of file lockedpool.h.
      
  | 
  private | 
Base address of arena.
Definition at line 106 of file lockedpool.h.
      
  | 
  private | 
Map from begin of free chunk to its node in size_to_free_chunk.
Definition at line 98 of file lockedpool.h.
      
  | 
  private | 
Map from end of free chunk to its node in size_to_free_chunk.
Definition at line 100 of file lockedpool.h.
      
  | 
  private | 
Map from begin of used chunk to its size.
Definition at line 103 of file lockedpool.h.
      
  | 
  private | 
End address of arena.
Definition at line 108 of file lockedpool.h.
      
  | 
  private | 
Map to enable O(log(n)) best-fit allocation, as it's sorted by size.
Definition at line 94 of file lockedpool.h.
 1.8.14