Open CASCADE Technology 6.6.0
Data Structures | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
NCollection_IncAllocator Class Reference

#include <NCollection_IncAllocator.hxx>

Inheritance diagram for NCollection_IncAllocator:
Inheritance graph
[legend]

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

IBlockmyFirstBlock
size_t mySize
size_t myMemSize

Detailed Description

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


Member Typedef Documentation


Constructor & Destructor Documentation

NCollection_IncAllocator::NCollection_IncAllocator ( const size_t  theBlockSize = 24600)
NCollection_IncAllocator::~NCollection_IncAllocator ( )

Member Function Documentation

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)
Parameters:
doReleaseMemTrue - release all previously allocated memory, False - preserve it for future allocations.

Field Documentation


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines