memorypool Class Reference

## Public Member Functions

| memorypool (size_t initialsize, size_t increment, size_t resizeinterval)
| ~memorypool ()
unsigned char * | allocate (size_t size)
unsigned char * | allocateAndClear (size_t size)
void | deallocate ()
void | print ()

## Detailed Description

The memorypool class provides methods for creating and using a memory pool.

If you have an iterative process that requires variable amounts of ram for each iteration, using a memory pool can be faster than allocating and deallocating memory on-demand and less resource-intensive than allocating static buffers that are large enough to accommodate the maximum amount of data you may have to store.

## Constructor & Destructor Documentation

memorypool::memorypool | ( | size_t | initialsize,
|  | size_t | increment,
|  | size_t | resizeinterval
| ) |  |

Creates a memory pool of initial size "initialsize".

When the pool needs to grow, it will grow by at least "increment" bytes. If more than increment bytes are requested, it will grow by that amount instead.

When deallocate() has been called "resizeinterval" times, it will evaluate the average amount of memory malloc'ed (since the last time it did this) and resize the initial buffer size to this size.

memorypool::~memorypool | ( |  | ) |

Deletes this instance of the memorypool class.

## Member Function Documentation

unsigned char* memorypool::allocate | ( | size_t | size | ) |

Returns a pointer to a contiguous block of "size" bytes in the pool. The pool will grow as necessary to accomodate allocations.

unsigned char* memorypool::allocateAndClear | ( | size_t | size | ) |

Returns a pointer to a contiguous block of "size" bytes in the pool. The pool will grow as necessary to accomodate allocations. Each byte of data in the block of data is set to NULL.

void memorypool::deallocate | ( |  | ) |

Shrinks the pool back down to it's initial size and frees all previously allocated blocks.

void memorypool::print | ( |  | ) |

Prints a visual representation of the pool.