StackThreads/MP: version 0.77 User's Guide
Interfaces to region-based memory manager is also wrapped.
#include <st_mm.h> @ st_region_t MM_MAKE_REGION(); @ st_region_t MM_MAKE_REGION_AUX(chunk_size, init_size, pre_alloc_option, alloc, free); @ st_region_t MM_MAKE_REGION_HIGHLY_CONCURRENT_1(init_size, alloc, free) @ void * MM_REGION_MALLOC(sz, rg); @ void MM_REGION_FREE(ptr); @ void MM_RESET_REGION(rg); @ void MM_ABANDON_REGION(rg);
They are macros whose behavior change according to the following parameter.
#define RALLOC ...
RALLOC
is either 0 or 1. When RALLOC
is 1, all
MM_REGION_xxx
, except for MM_REGION_FREE(ptr)
, are
equivalent to st_region_xxx. For example, MM_MAKE_REGION()
is
equivalent to st_make_region()
. MM_REGION_FREE(ptr)
has no effects. When RALLOC
is 0, all MM_REGION_xxx
things are redirected to the underlying allocator. For example,
MM_REGION_MALLOC(sz, rg)
ignores the region parameter and
is equivalent to MM_ALLOC(sz)
. MM_REGION_FREE(ptr)
behaves like MM_FREE(ptr)
.