TNL::DataChunker Class Reference
#include <tnlDataChunker.h>
Inheritance diagram for TNL::DataChunker:
Detailed Description
Implements a chunked data allocater.
Calling new/malloc all the time is a time consuming operation. Therefore, we provide the DataChunker, which allocates memory in blocks of chunkSize (by default 16k, see ChunkSize, though it can be set in the constructor), then doles it out as requested, in chunks of up to chunkSize in size.
It will assert if you try to get more than ChunkSize bytes at a time, and it deals with the logic of allocating new blocks and giving out word-aligned chunks.
Note that new/free/realloc WILL NOT WORK on memory gotten from the DataChunker. This also only grows (you can call freeBlocks to deallocate and reset things).
Member Enumeration Documentation
Constructor & Destructor Documentation
TNL::DataChunker::DataChunker |
( |
S32 |
size = ChunkSize |
) |
|
|
|
Construct a DataChunker with a page size of size bytes.
|
Member Function Documentation
void* TNL::DataChunker::alloc |
( |
S32 |
size |
) |
|
|
|
allocate a pointer to memory of size bytes from the DataChunker
|
void TNL::DataChunker::freeBlocks |
( |
|
) |
|
|
void TNL::DataChunker::swap |
( |
DataChunker & |
d |
) |
[inline] |
|
|
Swaps the memory allocated in one data chunker for another.
This can be used to implement packing of memory stored in a DataChunker. |
Field Documentation
|
current page we're allocating data from
If the data size request is greater than the memory space currently available in the current page, a new page will be allocated. |