mi-malloc 1.8/2.1
 
Lade...
Suche...
Keine Treffer
Heap-Allokation

First-Class-Heaps, die auf einmal zerstört werden können. Mehr...

Typedefs

typedef struct mi_heap_s mi_heap_t
 Typ von First-Class-Heaps.
 

Funktionen

mi_heap_tmi_heap_new ()
 Erstellt einen neuen Heap, der für die Allokation verwendet werden kann.
 
void mi_heap_delete (mi_heap_t *heap)
 Löscht einen zuvor allokierten Heap.
 
void mi_heap_destroy (mi_heap_t *heap)
 Zerstört einen Heap und gibt alle noch allokierten Blöcke frei.
 
mi_heap_tmi_heap_set_default (mi_heap_t *heap)
 Setzt den Standard-Heap, der im aktuellen Thread für mi_malloc() usw. verwendet werden soll.
 
mi_heap_tmi_heap_get_default ()
 Holt den Standard-Heap, der für mi_malloc() usw. verwendet wird.
 
mi_heap_tmi_heap_get_backing ()
 Holt den zugrundeliegenden Heap.
 
void mi_heap_collect (mi_heap_t *heap, bool force)
 Gibt ausstehende Ressourcen in einem bestimmten Heap frei.
 
void * mi_heap_malloc (mi_heap_t *heap, size_t size)
 Allokiert in einem bestimmten Heap.
 
void * mi_heap_malloc_small (mi_heap_t *heap, size_t size)
 Allokiert ein kleines Objekt in einem bestimmten Heap.
 
void * mi_heap_zalloc (mi_heap_t *heap, size_t size)
 Allokiert null-initialisierte Daten in einem bestimmten Heap.
 
void * mi_heap_calloc (mi_heap_t *heap, size_t count, size_t size)
 Allokiert count null-initialisierte Elemente in einem bestimmten Heap.
 
void * mi_heap_mallocn (mi_heap_t *heap, size_t count, size_t size)
 Allokiert count Elemente in einem bestimmten Heap.
 
char * mi_heap_strdup (mi_heap_t *heap, const char *s)
 Dupliziert einen String in einem bestimmten Heap.
 
char * mi_heap_strndup (mi_heap_t *heap, const char *s, size_t n)
 Dupliziert einen String von maximaler Länge n in einem bestimmten Heap.
 
char * mi_heap_realpath (mi_heap_t *heap, const char *fname, char *resolved_name)
 Löst einen Dateinamen auf und verwendet den angegebenen heap, um das Ergebnis zu allokieren.
 
void * mi_heap_realloc (mi_heap_t *heap, void *p, size_t newsize)
 
void * mi_heap_reallocn (mi_heap_t *heap, void *p, size_t count, size_t size)
 
void * mi_heap_reallocf (mi_heap_t *heap, void *p, size_t newsize)
 
void * mi_heap_malloc_aligned (mi_heap_t *heap, size_t size, size_t alignment)
 
void * mi_heap_malloc_aligned_at (mi_heap_t *heap, size_t size, size_t alignment, size_t offset)
 
void * mi_heap_zalloc_aligned (mi_heap_t *heap, size_t size, size_t alignment)
 
void * mi_heap_zalloc_aligned_at (mi_heap_t *heap, size_t size, size_t alignment, size_t offset)
 
void * mi_heap_calloc_aligned (mi_heap_t *heap, size_t count, size_t size, size_t alignment)
 
void * mi_heap_calloc_aligned_at (mi_heap_t *heap, size_t count, size_t size, size_t alignment, size_t offset)
 
void * mi_heap_realloc_aligned (mi_heap_t *heap, void *p, size_t newsize, size_t alignment)
 
void * mi_heap_realloc_aligned_at (mi_heap_t *heap, void *p, size_t newsize, size_t alignment, size_t offset)
 

Detaillierte Beschreibung

First-Class-Heaps, die auf einmal zerstört werden können.

Typedef-Dokumentation

◆ mi_heap_t

typedef struct mi_heap_s mi_heap_t

Typ von First-Class-Heaps.

Ein Heap kann nur für (Re)Allokationen im Thread verwendet werden, der diesen Heap erstellt hat! Alle allokierten Blöcke können jedoch von jedem anderen Thread freigegeben werden.

Funktionsdokumentation

◆ mi_heap_calloc()

void * mi_heap_calloc ( mi_heap_t * heap,
size_t count,
size_t size )

Allokiert count null-initialisierte Elemente in einem bestimmten Heap.

Siehe auch
mi_calloc()

◆ mi_heap_calloc_aligned()

void * mi_heap_calloc_aligned ( mi_heap_t * heap,
size_t count,
size_t size,
size_t alignment )

◆ mi_heap_calloc_aligned_at()

void * mi_heap_calloc_aligned_at ( mi_heap_t * heap,
size_t count,
size_t size,
size_t alignment,
size_t offset )

◆ mi_heap_collect()

void mi_heap_collect ( mi_heap_t * heap,
bool force )

Gibt ausstehende Ressourcen in einem bestimmten Heap frei.

◆ mi_heap_delete()

void mi_heap_delete ( mi_heap_t * heap)

Löscht einen zuvor allokierten Heap.

Dies gibt Ressourcen frei und migriert alle noch allokierten Blöcke in diesem Heap (effizient) in den Standard-Heap.

Wenn heap der Standard-Heap ist, wird der Standard-Heap auf den zugrundeliegenden Heap gesetzt.

◆ mi_heap_destroy()

void mi_heap_destroy ( mi_heap_t * heap)

Zerstört einen Heap und gibt alle noch allokierten Blöcke frei.

Vorsicht bei der Verwendung, da dies alle noch im Heap allokierten Blöcke freigibt. Dies kann jedoch eine sehr effiziente Methode sein, den gesamten Heap-Speicher auf einmal freizugeben.

Wenn heap der Standard-Heap ist, wird der Standard-Heap auf den zugrundeliegenden Heap gesetzt.

◆ mi_heap_get_backing()

mi_heap_t * mi_heap_get_backing ( )

Holt den zugrundeliegenden Heap.

Der *zugrundeliegende* Heap ist der anfängliche Standard-Heap für einen Thread und immer für Allokationen verfügbar. Er kann nicht zerstört oder gelöscht werden, außer durch Beenden des Threads.

◆ mi_heap_get_default()

mi_heap_t * mi_heap_get_default ( )

Holt den Standard-Heap, der für mi_malloc() usw. verwendet wird.

(für den aktuellen Thread).

Rückgabe
Der aktuelle Standard-Heap.

◆ mi_heap_malloc()

void * mi_heap_malloc ( mi_heap_t * heap,
size_t size )

Allokiert in einem bestimmten Heap.

Siehe auch
mi_malloc()

◆ mi_heap_malloc_aligned()

void * mi_heap_malloc_aligned ( mi_heap_t * heap,
size_t size,
size_t alignment )

◆ mi_heap_malloc_aligned_at()

void * mi_heap_malloc_aligned_at ( mi_heap_t * heap,
size_t size,
size_t alignment,
size_t offset )

◆ mi_heap_malloc_small()

void * mi_heap_malloc_small ( mi_heap_t * heap,
size_t size )

Allokiert ein kleines Objekt in einem bestimmten Heap.

size muss kleiner oder gleich MI_SMALL_SIZE_MAX() sein.

Siehe auch
mi_malloc()

◆ mi_heap_mallocn()

void * mi_heap_mallocn ( mi_heap_t * heap,
size_t count,
size_t size )

Allokiert count Elemente in einem bestimmten Heap.

Siehe auch
mi_mallocn()

◆ mi_heap_new()

mi_heap_t * mi_heap_new ( )

Erstellt einen neuen Heap, der für die Allokation verwendet werden kann.

◆ mi_heap_realloc()

void * mi_heap_realloc ( mi_heap_t * heap,
void * p,
size_t newsize )

◆ mi_heap_realloc_aligned()

void * mi_heap_realloc_aligned ( mi_heap_t * heap,
void * p,
size_t newsize,
size_t alignment )

◆ mi_heap_realloc_aligned_at()

void * mi_heap_realloc_aligned_at ( mi_heap_t * heap,
void * p,
size_t newsize,
size_t alignment,
size_t offset )

◆ mi_heap_reallocf()

void * mi_heap_reallocf ( mi_heap_t * heap,
void * p,
size_t newsize )

◆ mi_heap_reallocn()

void * mi_heap_reallocn ( mi_heap_t * heap,
void * p,
size_t count,
size_t size )

◆ mi_heap_realpath()

char * mi_heap_realpath ( mi_heap_t * heap,
const char * fname,
char * resolved_name )

Löst einen Dateinamen auf und verwendet den angegebenen heap, um das Ergebnis zu allokieren.

Siehe auch
mi_realpath()

◆ mi_heap_set_default()

mi_heap_t * mi_heap_set_default ( mi_heap_t * heap)

Setzt den Standard-Heap, der im aktuellen Thread für mi_malloc() usw. verwendet werden soll.

Parameter
heapDer neue Standard-Heap.
Rückgabe
Der vorherige Standard-Heap.

◆ mi_heap_strdup()

char * mi_heap_strdup ( mi_heap_t * heap,
const char * s )

Dupliziert einen String in einem bestimmten Heap.

Siehe auch
mi_strdup()

◆ mi_heap_strndup()

char * mi_heap_strndup ( mi_heap_t * heap,
const char * s,
size_t n )

Dupliziert einen String von maximaler Länge n in einem bestimmten Heap.

Siehe auch
mi_strndup()

◆ mi_heap_zalloc()

void * mi_heap_zalloc ( mi_heap_t * heap,
size_t size )

Allokiert null-initialisierte Daten in einem bestimmten Heap.

Siehe auch
mi_zalloc()

◆ mi_heap_zalloc_aligned()

void * mi_heap_zalloc_aligned ( mi_heap_t * heap,
size_t size,
size_t alignment )

◆ mi_heap_zalloc_aligned_at()

void * mi_heap_zalloc_aligned_at ( mi_heap_t * heap,
size_t size,
size_t alignment,
size_t offset )