Open CASCADE Technology
6.5.4
|
#include <NCollection_IncAllocator.hxx>
Data Structures | |
struct | IBlock |
Public Types | |
typedef void * | aligned_t |
Public Member Functions | |
NCollection_IncAllocator (const size_t theBlockSize=24600) | |
Constructor. | |
virtual void * | Allocate (const size_t size) |
Allocate memory with given size. Returns NULL on failure. | |
virtual void | Free (void *anAddress) |
Free a previously allocated memory. Does nothing. | |
size_t | GetMemSize () const |
Diagnostic method, returns the total allocated size. | |
~NCollection_IncAllocator () | |
Destructor (calls Clean() internally) | |
void * | Reallocate (void *anAddress, const size_t oldSize, const size_t newSize) |
Reallocation: it is always allowed but is only efficient with the last allocated item. | |
void | Reset (const Standard_Boolean doReleaseMem=Standard_True) |
Re-initialize the allocator so that the next Allocate call should start allocating in the very begining as though the allocator is just constructed. Warning: make sure that all previously allocated data are no more used in your code! | |
Protected Member Functions | |
void | Clean () |
Flush all previously allocated data. All pointers returned by Allocate() become invalid -- be very careful with this. | |
void * | allocateNewBlock (const size_t cSize) |
Allocate a new block and return a pointer to it ** only for internal usage **. | |
Protected Attributes | |
IBlock * | myFirstBlock |
size_t | mySize |
size_t | myMemSize |
Class NCollection_IncAllocator - incremental memory allocator. This class allocates memory on request returning the pointer to an allocated block. This memory is never returned to the system until the allocator is destroyed.
By comparison with the standard new() and malloc() calls, this method is faster and consumes very small additional memory to maintain the heap.
All pointers returned by Allocate() are aligned to the size of the data type "aligned_t". To modify the size of memory blocks requested from the OS, use the parameter of the constructor (measured in bytes); if this parameter is smaller than 25 bytes on 32bit or 49 bytes on 64bit, the block size will be the default 24 kbytes
typedef void* NCollection_IncAllocator::aligned_t |
NCollection_IncAllocator::NCollection_IncAllocator | ( | const size_t | theBlockSize = 24600 | ) |
virtual void* NCollection_IncAllocator::Allocate | ( | const size_t | size | ) | [virtual] |
Reimplemented from NCollection_BaseAllocator.
Reimplemented in NIS_Allocator.
void* NCollection_IncAllocator::allocateNewBlock | ( | const size_t | cSize | ) | [protected] |
void NCollection_IncAllocator::Clean | ( | ) | [protected] |
virtual void NCollection_IncAllocator::Free | ( | void * | anAddress | ) | [virtual] |
Reimplemented from NCollection_BaseAllocator.
Reimplemented in NIS_Allocator.
size_t NCollection_IncAllocator::GetMemSize | ( | ) | const |
void* NCollection_IncAllocator::Reallocate | ( | void * | anAddress, |
const size_t | oldSize, | ||
const size_t | newSize | ||
) |
void NCollection_IncAllocator::Reset | ( | const Standard_Boolean | doReleaseMem = Standard_True | ) |
doReleaseMem | True - release all previously allocated memory, False - preserve it for future allocations. |
IBlock* NCollection_IncAllocator::myFirstBlock [protected] |
size_t NCollection_IncAllocator::myMemSize [protected] |
size_t NCollection_IncAllocator::mySize [protected] |