スケーラブルなメモリー割り当て用の低水準インターフェイス。
extern "C" {
// C メモリー・アロケーターのスケーラブル・バージョン
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 );
// _msize/malloc_size/malloc_usable_size のスケーラブル・バージョン
size_t scalable_msize( void* ptr );
// posix_memalign のスケーラブル・バージョン
int scalable_posix_memalign( void** memptr, size_t alignment,
size_t size );
// アラインして割り当て
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"
これらの関数は、スケーラブル・アロケーターに C 水準のインターフェイスを提供します。 scalable_x ルーチンはそれぞれ、x ライブラリー関数に似た動作を行います。 下記の表に示されているように、ルーチンには 2 つのファミリーがあります。 あるファミリーの scalable_x 関数で割り当てた記憶領域は、C 標準ライブラリー関数ではなく、同じファミリーの scalable_x 関数で解放またはサイズ変更してください。 同様に、C 標準ライブラリー関数で割り当てた記憶領域は、scalable_x 関数で解放またはサイズ変更しないでください。
戻り値
ptr がスケーラブル・アロケーターで割り当てたメモリーブロックを指している場合は、メモリーブロックの使用可能なサイズ。 ptr がそのようなブロックを指していない場合は 0。