# Which Dynamic Libraries to Use

The template `scalable_allocator<T>` requires the oneAPI Threading Building Blocks (oneTBB) scalable memory allocator library as described in Scalable Memory Allocator. It does not require the oneTBB general library, and can be used independently of the rest of oneTBB.

The templates `tbb_allocator<T>` and `cache_aligned_allocator<T>` use the scalable allocator library if it is present otherwise it reverts to using `malloc` and `free`. Thus, you can use these templates even in applications that choose to omit the scalable memory allocator library.

The rest of oneAPI Threading Building Blocks (oneTBB) can be used with or without the oneTBB scalable memory allocator library.

Template | Requirements | Notes
--- | --- | ---
`scalable_allocator<T>` | oneAPI Threading Building Blocks (oneTBB) scalable memory allocator library. See Scalable Memory Allocator. |
`tbb_allocator<T>` `cache_aligned_allocator<T>` |  | Uses the scalable allocator library if it is present, otherwise it reverts to using `malloc` and `free`.