mi-malloc 1.8/2.1
 
正在加载...
正在搜索...
无匹配项
堆分配

可以一次性销毁的头等堆。更多信息...

类型定义

typedef struct mi_heap_s mi_heap_t
 头等堆的类型。
 

函数

mi_heap_tmi_heap_new ()
 创建一个可用于分配的新堆。
 
void mi_heap_delete (mi_heap_t *heap)
 删除之前分配的堆。
 
void mi_heap_destroy (mi_heap_t *heap)
 销毁堆,释放其所有已分配的块。
 
mi_heap_tmi_heap_set_default (mi_heap_t *heap)
 设置当前线程中用于 mi_malloc() 等函数的默认堆。
 
mi_heap_tmi_heap_get_default ()
 获取用于 mi_malloc() 等函数的默认堆。
 
mi_heap_tmi_heap_get_backing ()
 获取支持堆。
 
void mi_heap_collect (mi_heap_t *heap, bool force)
 释放特定堆中的未处理资源。
 
void * mi_heap_malloc (mi_heap_t *heap, size_t size)
 在特定堆中分配。
 
void * mi_heap_malloc_small (mi_heap_t *heap, size_t size)
 在特定堆中分配一个小对象。
 
void * mi_heap_zalloc (mi_heap_t *heap, size_t size)
 在特定堆中分配零初始化的内存。
 
void * mi_heap_calloc (mi_heap_t *heap, size_t count, size_t size)
 在特定堆中分配 count 个零初始化的元素。
 
void * mi_heap_mallocn (mi_heap_t *heap, size_t count, size_t size)
 在特定堆中分配 count 个元素。
 
char * mi_heap_strdup (mi_heap_t *heap, const char *s)
 在特定堆中复制字符串。
 
char * mi_heap_strndup (mi_heap_t *heap, const char *s, size_t n)
 在特定堆中复制长度至多为 n 的字符串。
 
char * mi_heap_realpath (mi_heap_t *heap, const char *fname, char *resolved_name)
 使用特定的 heap 解析文件路径名以分配结果。
 
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)
 

详细描述

可以一次性销毁的头等堆。

类型定义文档

◆ mi_heap_t

typedef struct mi_heap_s mi_heap_t

头等堆的类型。

堆只能用于创建它的线程中的(重新)分配!但是,任何已分配的块都可以被任何其他线程释放。

函数文档

◆ mi_heap_calloc()

void * mi_heap_calloc ( mi_heap_t * ,
size_t 计数,
size_t size )

在特定堆中分配 count 个零初始化的元素。

另请参见
mi_calloc()

◆ mi_heap_calloc_aligned()

void * mi_heap_calloc_aligned ( mi_heap_t * ,
size_t 计数,
size_t size,
size_t 对齐 )

◆ mi_heap_calloc_aligned_at()

void * mi_heap_calloc_aligned_at ( mi_heap_t * ,
size_t 计数,
size_t size,
size_t 对齐,
size_t 偏移量 )

◆ mi_heap_collect()

void mi_heap_collect ( mi_heap_t * ,
bool 强制 )

释放特定堆中的未处理资源。

◆ mi_heap_delete()

void mi_heap_delete ( mi_heap_t * )

删除之前分配的堆。

这将释放资源并将此堆中所有仍分配的块(高效地)迁移到默认堆。

如果 heap 是默认堆,则默认堆将设置为支持堆。

◆ mi_heap_destroy()

void mi_heap_destroy ( mi_heap_t * )

销毁堆,释放其所有已分配的块。

请谨慎使用,因为它将释放堆中所有仍分配的块。然而,这可以是一种非常高效的一次性释放所有堆内存的方法。

如果 heap 是默认堆,则默认堆将设置为支持堆。

◆ mi_heap_get_backing()

mi_heap_t * mi_heap_get_backing ( )

获取支持堆。

支持堆是线程的初始默认堆,始终可用于分配。它不能被销毁或删除,除非线程退出。

◆ mi_heap_get_default()

mi_heap_t * mi_heap_get_default ( )

获取用于 mi_malloc() 等函数的默认堆。

(对于当前线程)。

返回
当前默认堆。

◆ mi_heap_malloc()

void * mi_heap_malloc ( mi_heap_t * ,
size_t size )

在特定堆中分配。

另请参见
mi_malloc()

◆ mi_heap_malloc_aligned()

void * mi_heap_malloc_aligned ( mi_heap_t * ,
size_t size,
size_t 对齐 )

◆ mi_heap_malloc_aligned_at()

void * mi_heap_malloc_aligned_at ( mi_heap_t * ,
size_t size,
size_t 对齐,
size_t 偏移量 )

◆ mi_heap_malloc_small()

void * mi_heap_malloc_small ( mi_heap_t * ,
size_t size )

在特定堆中分配一个小对象。

size 必须小于或等于 MI_SMALL_SIZE_MAX()

另请参见
mi_malloc()

◆ mi_heap_mallocn()

void * mi_heap_mallocn ( mi_heap_t * ,
size_t 计数,
size_t size )

在特定堆中分配 count 个元素。

另请参见
mi_mallocn()

◆ mi_heap_new()

mi_heap_t * mi_heap_new ( )

创建一个可用于分配的新堆。

◆ mi_heap_realloc()

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

◆ mi_heap_realloc_aligned()

void * mi_heap_realloc_aligned ( mi_heap_t * ,
void * p,
size_t newsize,
size_t 对齐 )

◆ mi_heap_realloc_aligned_at()

void * mi_heap_realloc_aligned_at ( mi_heap_t * ,
void * p,
size_t newsize,
size_t 对齐,
size_t 偏移量 )

◆ mi_heap_reallocf()

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

◆ mi_heap_reallocn()

void * mi_heap_reallocn ( mi_heap_t * ,
void * p,
size_t 计数,
size_t size )

◆ mi_heap_realpath()

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

使用特定的 heap 解析文件路径名以分配结果。

另请参见
mi_realpath()

◆ mi_heap_set_default()

mi_heap_t * mi_heap_set_default ( mi_heap_t * )

设置当前线程中用于 mi_malloc() 等函数的默认堆。

参数
新的默认堆。
返回
以前的默认堆。

◆ mi_heap_strdup()

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

在特定堆中复制字符串。

另请参见
mi_strdup()

◆ mi_heap_strndup()

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

在特定堆中复制长度至多为 n 的字符串。

另请参见
mi_strndup()

◆ mi_heap_zalloc()

void * mi_heap_zalloc ( mi_heap_t * ,
size_t size )

在特定堆中分配零初始化的内存。

另请参见
mi_zalloc()

◆ mi_heap_zalloc_aligned()

void * mi_heap_zalloc_aligned ( mi_heap_t * ,
size_t size,
size_t 对齐 )

◆ mi_heap_zalloc_aligned_at()

void * mi_heap_zalloc_aligned_at ( mi_heap_t * ,
size_t size,
size_t 对齐,
size_t 偏移量 )