# Scalable Memory Pools

Note

To enable this feature, set the `TBB_PREVIEW_MEMORY_POOL` macro to 1.

Memory pools allocate and free memory from a specified region or an underlying allocator using thread-safe, scalable operations. The following table summarizes the Memory Pool named requirement. Here, `P` represents an instance of the memory pool class.

Pseudo-Signature | Semantics
--- | ---
`~P() throw();` | Destructor. Frees all the allocated memory.
`void P::recycle();` | Frees all the allocated memory.
`void* P::malloc(size_t n);` | Returns a pointer to `n` bytes allocated from the memory pool.
`void P::free(void* ptr);` | Frees the memory object specified via `ptr` pointer.
`void* P::realloc(void* ptr, size_t n);` | Reallocates the memory object pointed by `ptr` to `n` bytes.

Model Types

The `memory_pool` template class and the `fixed_pool` class meet the Memory Pool named requirement.

- memory_pool
- fixed_pool
- memory_pool_allocator