Zen API
 All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
kHeapAlloc Class Reference

Description

Allocates memory from user-defined memory regions.

The kHeapAlloc class establishes a memory heap within one or more pre-allocated regions of memory. After construction, the inherited kAlloc_Get/kAlloc_Free functions can be used to allocate or free memory from within the heap.

Heap management information is stored in the preallocated memory regions that comprise the memory heap. Accordingly, the effective capacity of the heap allocator will be somewhat less than the sum of the preallocated memory regions. The amount of memory consumed by heap management information increases with the number free blocks that must be managed by the heap, which in turn increases with heap fragmentation.

It is valid to destroy a kHeapAlloc instance without first deallocating all of the memory allocated by it. This approach may sometimes be advantageous for performance or convenience. However, it is invalid to access memory that was allocated from a kHeapAlloc instance after the kHeapAlloc instance has been destroyed.

All public functions are thread-safe. kAlloc_Get/kAlloc_Free functions have O(log n) time complexity, where n is number of free blocks managed by the heap.

Inheritance diagram for kHeapAlloc:
Inheritance graph

Public Types

typedef kStatus(kCallkHeapAllocExhaustionFx )(kHeapAlloc heapAlloc, kPointer receiver, kSize minimumRegionSize)
 Signature of callback to notify about heap exhaustion. More...
 

Public Member Functions

kStatus kHeapAlloc_AddExhaustionHandler (kHeapAlloc heapAlloc, kHeapAllocExhaustionFx callback, kPointer receiver)
 Adds a callback that will be invoked upon memory exhaustion. More...
 
kStatus kHeapAlloc_AddMemoryRegion (kHeapAlloc heapAlloc, kPointer address, kSize size)
 Adds a pre-allocated memory region for use of the kHeapAlloc object. More...
 
kStatus kHeapAlloc_Clear (kHeapAlloc heapAlloc)
 Frees all memory allocations that have been made from this kHeapAlloc instance. More...
 
kStatus kHeapAlloc_Construct (kHeapAlloc *heapAlloc, kAlloc allocator)
 Constructs a new kHeapAlloc instance. More...
 
kStatus kHeapAlloc_RemoveMemoryRegions (kHeapAlloc heapAlloc)
 Removes all added memory regions. More...
 
kStatus kHeapAlloc_Stats (kHeapAlloc heapAlloc, kHeapAllocStats *stats)
 Reports used and free blocks from all added memory regions. More...
 
- Public Member Functions inherited from kAlloc
kAlloc kAlloc_App ()
 Gets the allocator that should normally be used by applications to request memory. More...
 
kBool kAlloc_CanGetObject (kAlloc alloc)
 Reports whether this allocator is suitable for allocating objects. More...
 
kAlloc kAlloc_Fallback (kAlloc alloc)
 Returns the passed allocator, or if null, the App allocator. More...
 
kStatus kAlloc_Free (kAlloc alloc, void *mem)
 Frees a block of memory. More...
 
kStatus kAlloc_FreeRef (kAlloc alloc, void *mem)
 Frees a block of memory and sets the memory pointer to kNULL. More...
 
kStatus kAlloc_Get (kAlloc alloc, kSize size, void *mem, kMemoryAlignment alignment)
 Allocates a block of memory. More...
 
kStatus kAlloc_Get (kAlloc alloc, kSize size, void *mem)
 Allocates a block of memory. More...
 
kStatus kAlloc_GetObject (kAlloc alloc, kType type, void *mem)
 Allocates a block of memory large enough for an object of the specified type. More...
 
kStatus kAlloc_GetZero (kAlloc alloc, kSize size, void *mem, kMemoryAlignment alignment)
 Allocates a block of memory and zero-initializes the block. More...
 
kStatus kAlloc_GetZero (kAlloc alloc, kSize size, void *mem)
 Allocates a block of memory and zero-initializes the block. More...
 
kBool kAlloc_IsForeign (kAlloc alloc)
 Reports whether memory will be allocated in a foreign address space. More...
 
kAlloc kAlloc_System ()
 Gets the system allocator. More...
 
kAllocTrait kAlloc_Traits (kAlloc alloc)
 Gets the traits associated with this allocator. More...
 
- Public Member Functions inherited from kObject
kAlloc kObject_Alloc (kObject object)
 Gets the memory allocator associated with this object. More...
 
kAllocTrait kObject_AllocTraits (kObject object)
 Gets the bitset of allocator traits for any allocators used within this object, including aggregated child elements. More...
 
kStatus kObject_Clone (kObject *object, kObject source, kAlloc objectAllocator)
 Constructs a new object by copying an existing object, including any aggregated child elements. More...
 
kStatus kObject_Clone (kObject *object, kObject source, kAlloc objectAllocator, kAlloc valueAllocator, kObject context=kNULL)
 Constructs a new object by copying an existing object, including any aggregated child elements. More...
 
kStatus kObject_Destroy (kObject object)
 Destroys the object. More...
 
kStatus kObject_Dispose (kObject object)
 Destroys the object and any aggregated child elements. More...
 
kBool kObject_Equals (kObject object, kObject other)
 Determines whether the object is equal to another object. More...
 
kBool kObject_HasForeignData (kObject object)
 Reports whether the object, including aggregated child elements, contains any foreign memory references. More...
 
kSize kObject_HashCode (kObject object)
 Gets a hash code representing the state of this object. More...
 
kBool kObject_HasShared (kObject object)
 Reports whether an object or any of its aggregated child elements has a reference count greater than one. More...
 
kBool kObject_Is (kObject object, kType type)
 Determines whether this object is an instance of the specified type. More...
 
kBool kObject_IsShared (kObject object)
 Reports whether the object is currently shared (reference count greater than one). More...
 
kStatus kObject_SetPool (kObject object, kObjectPool pool)
 Sets the object pool associated with this object. More...
 
kStatus kObject_Share (kObject object)
 Increments the reference count associated with this object. More...
 
kSize kObject_Size (kObject object)
 Estimates the memory consumed by this object, including any aggregated child elements. More...
 
kType kObject_Type (kObject object)
 Returns the type of the object. More...
 

Additional Inherited Members

- Protected Member Functions inherited from kAlloc
kStatus kAlloc_Copy (kAlloc destAlloc, void *dest, kAlloc srcAlloc, const void *src, kSize size, kObject context=kNULL)
 Copies memory allocated by one allocator to memory allocated with a different allocator. More...
 
kStatus kAlloc_Init (kAlloc alloc, kType type, kAlloc allocator)
 Protected method called by derived classes to initialize the kAlloc base class. More...
 
kStatus kAlloc_VCopy (kAlloc alloc, kAlloc destAlloc, void *dest, kAlloc srcAlloc, const void *src, kSize size, kObject context)
 Protected virtual method that copies memory. More...
 
kStatus kAlloc_VFree (kAlloc alloc, void *mem)
 Protected virtual method that frees memory. More...
 
kStatus kAlloc_VGet (kAlloc alloc, kSize size, void *mem, kMemoryAlignment alignment)
 Protected virtual method that allocates memory. More...
 
kStatus kAlloc_VRelease (kAlloc alloc)
 Protected virtual method that deallocates any resources owned by the object. More...
 
- Protected Member Functions inherited from kObject
kStatus kObject_FreeMem (kObject object, void *mem)
 Protected method called by derived classes to free memory using the object's allocator. More...
 
kStatus kObject_FreeMemRef (kObject object, void *mem)
 Protected method called by derived classes to free memory (and reset the provided memory pointer to kNULL) using the object's allocator. More...
 
kStatus kObject_GetMem (kObject object, kSize size, void *mem)
 Protected method called by derived classes to allocate memory using the object's allocator. More...
 
kStatus kObject_GetMemZero (kObject object, kSize size, void *mem)
 Protected method called by derived classes to allocate and zero memory using the object's allocator. More...
 
kStatus kObject_Init (kObject object, kType type, kAlloc alloc)
 Protected method called by derived classes to initialize the kObject base class. More...
 
kAllocTrait kObject_VAllocTraits (kObject object)
 Protected virtual method that gets the bitset of allocator traits for any allocators used within this object, including aggregated child elements. More...
 
kStatus kObject_VClone (kObject object, kObject source, kAlloc valueAllocator, kObject context)
 Protected virtual method that clones (makes a deep copy of) the specified source object. More...
 
kStatus kObject_VDisposeItems (kObject object)
 Protected virtual method that destroys any aggregated child objects associated with a collection. More...
 
kBool kObject_VEquals (kObject object, kObject other)
 Protected virtual method that compares two objects for equality. More...
 
kSize kObject_VHashCode (kObject object)
 Protected virtual method that calculates a hash code representing the object instance. More...
 
kBool kObject_VHasShared (kObject object)
 Protected virtual method that reports whether an object or any of its aggregated child elements has a reference count greater than one. More...
 
kStatus kObject_VRelease (kObject object)
 Protected virtual method that deallocates any resources owned by the object. More...
 
kSize kObject_VSize (kObject object)
 Protected virtual method that calculates the total size (in bytes) of the object instance. More...
 

The documentation for this class was generated from the following file: