# fixed_pool

Note

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

A class for scalable memory allocation from a buffer of fixed size.

## Description

`fixed_pool` allocates and frees memory in a way that scales with the number of processors. All the memory available for the allocation is initially passed through arguments of the constructor. `fixed_pool` meet the Memory Pool named requirement.

## API

### Header

    #include "oneapi/tbb/memory_pool.h"

### Synopsis

    namespace oneapi {
        namespace tbb {
            class fixed_pool {
            public:
                fixed_pool(void *buffer, size_t size);
                fixed_pool(const fixed_pool& other) = delete;
                fixed_pool& operator=(const fixed_pool& other) = delete;
                ~fixed_pool();

                void recycle();
                void* malloc(size_t size);
                void free(void* ptr);
                void* realloc(void* ptr, size_t size);
            };
        } // namespace tbb
    } // namespace oneapi

### Member Functions

fixed_pool(void *buffer, size_t size)

  Effects: Constructs a memory pool to manage the memory of size `size` pointed to by `buffer`. Throws the `bad_alloc` exception if the library fails to construct an instance of the class.

## Examples

The code below provides a simple example of allocation from a fixed pool.

    #define TBB_PREVIEW_MEMORY_POOL 1
    #include "oneapi/tbb/memory_pool.h"

    int main() {
        char buf[1024];
        oneapi::tbb::fixed_pool my_pool(buf, 1024);

        void* my_ptr = my_pool.malloc(10);
        my_pool.free(my_ptr);
    }