csBlockAllocator< T > Class Template Reference
This class implements a memory allocator which can efficiently allocate objects that all have the same size. More...
#include <blockallocator.h>
Public Methods | |
csBlockAllocator (int s) | |
Construct a new block allocator which uses 'size' elements per block. | |
~csBlockAllocator () | |
Destruct all. | |
void | Compact () |
Compact the block allocator so that all blocks that are completely free are removed. | |
T * | Alloc () |
Allocate a new element. | |
void | Free (T *el) |
Deallocate an element. | |
void | Dump () |
For debugging: dump contents. |
Detailed Description
template<class T>
class csBlockAllocator< T >
This class implements a memory allocator which can efficiently allocate objects that all have the same size.
It has NO memory overhead per allocation (unless the objects are smaller than 8 bytes) and is extremely fast, both for Alloc and Free. Only restriction is it can only be used for the same type of object.
Note that the objects are properly constructed and destructed.
WARNING: This class does VERY little error checking!
Defining the macro CS_BLOCKALLOC_DEBUG will cause freed objects to be overwritten with '0xfb' bytes. This can be useful to track use of already freed objects, as they can be more easily recognized (as some members will be likely bogus.)
Definition at line 53 of file blockallocator.h.
Constructor & Destructor Documentation
|
Construct a new block allocator which uses 'size' elements per block. Using a bigger 'size' means there is more memory 'wasted' but it makes performance faster. Definition at line 148 of file blockallocator.h. |
|
Destruct all. Note that objects have to be freed properly before the block allocator is called, otherwise the destructors will not be called! In debug mode this destructor will also check that all objects are freed correctly. Definition at line 180 of file blockallocator.h. |
Member Function Documentation
|
Allocate a new element.
Definition at line 213 of file blockallocator.h. Referenced by csTree< T >::csTree(). |
|
Compact the block allocator so that all blocks that are completely free are removed. The blocks that still contain elements are not touched. Definition at line 198 of file blockallocator.h. |
|
For debugging: dump contents.
Definition at line 369 of file blockallocator.h. |
|
Deallocate an element. It is ok to give a 0 pointer here. Definition at line 244 of file blockallocator.h. Referenced by csTree< T >::Delete(). |
The documentation for this class was generated from the following file:
- csutil/blockallocator.h
Generated for Crystal Space by doxygen 1.2.18