12 #ifndef ROC_CORE_SLAB_POOL_H_
13 #define ROC_CORE_SLAB_POOL_H_
64 template <
class T,
size_t EmbeddedCapacity = 0>
79 size_t min_alloc_bytes = 0,
80 size_t max_alloc_bytes = 0,
81 size_t flags = DefaultSlabPoolFlags)
87 embedded_data_.memory(),
88 embedded_data_.size(),
99 return impl_.
reserve(n_objects);
123 AlignedStorage<EmbeddedCapacity * SlotSize> embedded_data_;
#define ROC_ATTR_NODISCARD
Emit warning if function result is not checked.
Base class for non-copyable objects.
ROC_ATTR_NODISCARD bool reserve(size_t n_objects)
Reserve memory for given number of objects.
void deallocate(void *memory)
Return memory to pool.
size_t object_size() const
Get size of objects in pool.
size_t num_guard_failures() const
Get number of guard failures.
void * allocate()
Allocate memory for an object.
ROC_ATTR_NODISCARD bool reserve(size_t n_objects)
Reserve memory for given number of objects.
void * allocate()
Allocate memory for an object.
void deallocate(void *memory)
Return memory to pool.
size_t num_guard_failures() const
Get number of guard failures detected.
SlabPool(const char *name, IArena &arena, size_t object_size=sizeof(T), size_t min_alloc_bytes=0, size_t max_alloc_bytes=0, size_t flags=DefaultSlabPoolFlags)
Initialize.
size_t object_size() const
Get size of objects in pool.
SlabPoolFlags
Memory pool flags.
@ SlabPoolFlag_EnableGuards
Enable guards for buffer overflow, invalid ownership, etc.
Memory pool implementation class.
Commonly used types and functions.
Maximum aligned data unit.