Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

CArena Class Reference

A Concrete Class for Dynamic Memory Management. More...

#include <Arena.H>

Inheritance diagram for CArena:

Inheritance graph
[legend]
Collaboration diagram for CArena:

Collaboration graph
[legend]
List of all members.

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< NodeNL

Protected Attributes

std::vector< void * > m_alloc
NL m_freelist
NL m_busylist
size_t m_hunk

Classes

class  Node

Detailed Description

A Concrete Class for Dynamic Memory Management.

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().


Member Typedef Documentation

typedef set< Node > CArena::NL [protected]
 


Member Enumeration Documentation

anonymous enum
 

The default memory hunk size to grab from the heap.

Enumeration values:
DefaultHunkSize 


Constructor & Destructor Documentation

CArena::CArena size_t  a_hunk_size = 0  ) 
 

: 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.

virtual CArena::~CArena  )  [virtual]
 

The destructor.


Member Function Documentation

virtual void* CArena::alloc size_t  a_nbytes  )  [virtual]
 

Allocate some memory.

Implements Arena.

void* CArena::calloc size_t  a_nmemb,
size_t  a_size
 

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.

virtual void CArena::free void *  a_vp  )  [virtual]
 

Free up allocated memory. Merge neighboring free memory chunks into largest possible chunk.

Implements Arena.

void* CArena::realloc void *  a_ptr,
size_t  a_size
 

Mirror the C realloc() function. This is here so that we can implement malloc(3) and family. User's shouldn't use this function.


Member Data Documentation

std::vector<void*> CArena::m_alloc [protected]
 

NL CArena::m_busylist [protected]
 

NL CArena::m_freelist [protected]
 

size_t CArena::m_hunk [protected]
 


The documentation for this class was generated from the following file:
Generated on Wed Oct 5 12:45:52 2005 for Chombo&AMRIdealMHD by  doxygen 1.4.1