Low level interface for scalable memory allocation.
extern "C" {
// Scalable analogs of C memory allocator
void* scalable_malloc( size_t size );
void scalable_free( void* ptr );
void* scalable_calloc( size_t nobj, size_t size );
void* scalable_realloc( void* ptr, size_t size );
// Analog of _msize/malloc_size/malloc_usable_size.
size_t scalable_msize( void* ptr );
// Scalable analog of posix_memalign
int scalable_posix_memalign( void** memptr, size_t alignment,
size_t size );
// Aligned allocation
void* scalable_aligned_malloc( size_t size,
size_t alignment);
void scalable_aligned_free( void* ptr );
void* scalable_aligned_realloc( void* ptr, size_t size,
size_t alignment );
}
#include "tbb/scalable_allocator.h"
These functions provide a C level interface to the scalable allocator. Each routine scalable_x behaves analogously to library function x. The routines form the two families shown in the table below, "C Interface to Scalable Allocator" . Storage allocated by a scalable_x function in one family must be freed or resized by a scalable_x function in the same family, not by a C standard library function. Likewise storage allocated by a C standard library function should not be freed or resized by a scalable_x function.
|
Family |
Allocation Routine |
Deallocation Routine |
Analogous Library |
|---|---|---|---|
|
1 |
scalable_malloc |
scalable_free |
C standard library |
|
scalable_calloc |
|||
|
scalable_realloc |
|||
|
scalable_posix_memalign |
POSIX* |
||
|
2 |
scalable_aligned_malloc |
scalable_aligned_free |
Microsoft* C run-time library |
|
scalable_aligned_free |
|||
|
scalable_aligned_realloc |
Returns
The usable size of the memory block pointed to by ptr if it was allocated by the scalable allocator. Returns zero if ptr does not point to such a block.