#include <Arena.H>
Inheritance diagram for CArena:
Public Types | |
enum | { DefaultHunkSize = 1024*1024 } |
The default memory hunk size to grab from the heap. More... | |
Public Member Functions | |
CArena (size_t a_hunk_size=0) | |
virtual | ~CArena () |
The destructor. | |
virtual void * | alloc (size_t a_nbytes) |
Allocate some memory. | |
virtual void | free (void *a_vp) |
void * | calloc (size_t a_nmemb, size_t a_size) |
void * | realloc (void *a_ptr, size_t a_size) |
Protected Types | |
typedef set< Node > | NL |
Protected Attributes | |
std::vector< void * > | m_alloc |
NL | m_freelist |
NL | m_busylist |
size_t | m_hunk |
Classes | |
class | Node |
This is a coalescing memory manager. It allocates (possibly) large chunks of heap space and apportions it out as requested. It merges together neighboring chunks on each free().
|
|
|
The default memory hunk size to grab from the heap.
|
|
: Construct a coalescing memory manager. `a_hunk_size' is the minimum size of hunks of memory to allocate from the heap. If a_hunk_size == 0 we use DefaultHunkSize as specified below. |
|
The destructor.
|
|
Allocate some memory.
Implements Arena. |
|
Mirror the C calloc() function. Returns zero'd memory of size a_nmemb*a_size. This is here so that we can implement malloc(3) and family. User's shouldn't use this function. |
|
Free up allocated memory. Merge neighboring free memory chunks into largest possible chunk. Implements Arena. |
|
Mirror the C realloc() function. This is here so that we can implement malloc(3) and family. User's shouldn't use this function. |
|
|
|
|
|
|
|
|