# Memory --- An allocator per Object definition with ring buffer pooling based # Single Allocation Once created never freed until shutdown # Pooling Allocations ## Ring Buffer ## Fixed Sized Objects ## Dynamic Sized Objects Dynamically sized objects must be aligned to a power of two Requires a ring buffer for each power of two ## Object Definitions ```c #define KPL_DYANMIC_OBJ_MIN_BITS 7 #define KPL_DYNAMIC_OBJ_MAX_BITS 30 #define KPL_DYNAMIC_OBJ_MIN_SIZE (1 << KPL_DYANMIC_OBJ_MIN_BITS) #define KPL_DYNAMIC_OBJ_MAX_SIZE (1 << KPL_DYNAMIC_OBJ_MAX_BITS) #define KPL_DYNAMIC_OBJ_HEADER() int32_t obj_size; typedef struct { KPL_DYNAMIC_OBJ_HEADER(); } kpl_dynamic_obj; ```