mi-malloc: Thread-local heaps

| mi-malloc 1.8/2.1 |

Loading...
Searching...
No Matches
Typedefs | Functions
Thread-local heaps

v3: Thread local heaps. More...

## Typedefs
typedef struct mi_theap_s | mi_theap_t
| Type of thread-local heaps.

## Functions
mi_theap_t * | mi_heap_theap (mi_heap_t *heap)
| Return the thread-local theap for the given heap.
void | mi_theap_collect (mi_theap_t *theap, bool force)
| Release outstanding resources in a specific theap.
mi_theap_t * | mi_theap_set_default (mi_theap_t *theap)
| Set the default thread-local theap to use in the current thread for mi_malloc() et al.
mi_theap_t * | mi_theap_get_default ()
| Get the default theap that is used for mi_malloc() et al. for the current thread.
void * | mi_theap_malloc (mi_theap_t *theap, size_t size)
| Allocate in a specific theap.
void * | mi_theap_malloc_small (mi_theap_t *theap, size_t size)
| Allocate a small object in a specific theap. size must be smaller or equal to MI_SMALL_SIZE_MAX().
void * | mi_theap_zalloc (mi_theap_t *theap, size_t size)
| Allocate zero-initialized in a specific heap.
void * | mi_theap_zalloc_small (mi_theap_t *theap, size_t size)
| Allocate a small object in a specific theap. size must be smaller or equal to MI_SMALL_SIZE_MAX().
void * | mi_theap_calloc (mi_theap_t *theap, size_t count, size_t size)
void * | mi_theap_malloc_aligned (mi_theap_t *theap, size_t size, size_t alignment)
void * | mi_theap_realloc (mi_theap_t *theap, void *p, size_t newsize)

## Detailed Description

v3: Thread local heaps.

The use of thread-local heaps is discouraged and only recommended for special cases like runtime systems that keep their own thread-local state. The "theaps" are thread-local heaps that v3 uses internally to implement efficient first-class heaps.

v1,v2: the `mi_heap_t` heaps in v1/v2 are exactly these `mi_theap_t` theaps in v3.

## Typedef Documentation

## ◆ mi_theap_t

typedef struct mi_theap_s mi_theap_t

Type of thread-local heaps.

## Function Documentation

## ◆ mi_heap_theap()

mi_theap_t * mi_heap_theap | ( | mi_heap_t * | heap | ) |

Return the thread-local theap for the given heap.

Parameters

  heap | The owning heap.

Returns
  The theap that serves thread-local allocations for the given `heap`. This can be used by runtime systems to request the thread-local theap once and then use it in its allocation functions (like mi_theap_malloc() or mi_theap_malloc_small() ) to avoid re-looking up the theap at each allocation call.

## ◆ mi_theap_calloc()

void * mi_theap_calloc | ( | mi_theap_t * | theap,
|  | size_t | count,
|  | size_t | size )

## ◆ mi_theap_collect()

void mi_theap_collect | ( | mi_theap_t * | theap,
|  | bool | force )

Release outstanding resources in a specific theap.

## ◆ mi_theap_get_default()

mi_theap_t * mi_theap_get_default | ( |  | ) |

Get the default theap that is used for mi_malloc() et al. for the current thread.

Returns
  The current default theap.

## ◆ mi_theap_malloc()

void * mi_theap_malloc | ( | mi_theap_t * | theap,
|  | size_t | size )

Allocate in a specific theap.

See also
  mi_malloc()

## ◆ mi_theap_malloc_aligned()

void * mi_theap_malloc_aligned | ( | mi_theap_t * | theap,
|  | size_t | size,
|  | size_t | alignment )

## ◆ mi_theap_malloc_small()

void * mi_theap_malloc_small | ( | mi_theap_t * | theap,
|  | size_t | size )

Allocate a small object in a specific theap. size must be smaller or equal to MI_SMALL_SIZE_MAX().

See also
  mi_malloc_small()

## ◆ mi_theap_realloc()

void * mi_theap_realloc | ( | mi_theap_t * | theap,
|  | void * | p,
|  | size_t | newsize )

## ◆ mi_theap_set_default()

mi_theap_t * mi_theap_set_default | ( | mi_theap_t * | theap | ) |

Set the default thread-local theap to use in the current thread for mi_malloc() et al.

Parameters

  theap | The new default theap.

Returns
  The previous default theap. By default it will point to the theap belonging to the main heap (mi_heap_main()).

## ◆ mi_theap_zalloc()

void * mi_theap_zalloc | ( | mi_theap_t * | theap,
|  | size_t | size )

Allocate zero-initialized in a specific heap.

See also
  mi_zalloc()

## ◆ mi_theap_zalloc_small()

void * mi_theap_zalloc_small | ( | mi_theap_t * | theap,
|  | size_t | size )

Allocate a small object in a specific theap. size must be smaller or equal to MI_SMALL_SIZE_MAX().

See also
  mi_zalloc_small()