可以一次性销毁的头等堆。更多信息...
类型定义 | |
typedef struct mi_heap_s | mi_heap_t |
头等堆的类型。 | |
函数 | |
mi_heap_t * | mi_heap_new () |
创建一个可用于分配的新堆。 | |
void | mi_heap_delete (mi_heap_t *heap) |
删除之前分配的堆。 | |
void | mi_heap_destroy (mi_heap_t *heap) |
销毁堆,释放其所有已分配的块。 | |
mi_heap_t * | mi_heap_set_default (mi_heap_t *heap) |
设置当前线程中用于 mi_malloc() 等函数的默认堆。 | |
mi_heap_t * | mi_heap_get_default () |
获取用于 mi_malloc() 等函数的默认堆。 | |
mi_heap_t * | mi_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) |
可以一次性销毁的头等堆。
typedef struct mi_heap_s mi_heap_t |
头等堆的类型。
堆只能用于创建它的线程中的(重新)分配!但是,任何已分配的块都可以被任何其他线程释放。
void * mi_heap_calloc | ( | mi_heap_t * | 堆, |
size_t | 计数, | ||
size_t | size ) |
在特定堆中分配 count 个零初始化的元素。
void * mi_heap_calloc_aligned | ( | mi_heap_t * | 堆, |
size_t | 计数, | ||
size_t | size, | ||
size_t | 对齐 ) |
void * mi_heap_calloc_aligned_at | ( | mi_heap_t * | 堆, |
size_t | 计数, | ||
size_t | size, | ||
size_t | 对齐, | ||
size_t | 偏移量 ) |
void mi_heap_collect | ( | mi_heap_t * | 堆, |
bool | 强制 ) |
释放特定堆中的未处理资源。
void mi_heap_delete | ( | mi_heap_t * | 堆 | ) |
删除之前分配的堆。
这将释放资源并将此堆中所有仍分配的块(高效地)迁移到默认堆。
如果 heap 是默认堆,则默认堆将设置为支持堆。
void mi_heap_destroy | ( | mi_heap_t * | 堆 | ) |
销毁堆,释放其所有已分配的块。
请谨慎使用,因为它将释放堆中所有仍分配的块。然而,这可以是一种非常高效的一次性释放所有堆内存的方法。
如果 heap 是默认堆,则默认堆将设置为支持堆。
mi_heap_t * mi_heap_get_backing | ( | ) |
获取支持堆。
支持堆是线程的初始默认堆,始终可用于分配。它不能被销毁或删除,除非线程退出。
mi_heap_t * mi_heap_get_default | ( | ) |
void * mi_heap_malloc | ( | mi_heap_t * | 堆, |
size_t | size ) |
在特定堆中分配。
void * mi_heap_malloc_aligned | ( | mi_heap_t * | 堆, |
size_t | size, | ||
size_t | 对齐 ) |
void * mi_heap_malloc_aligned_at | ( | mi_heap_t * | 堆, |
size_t | size, | ||
size_t | 对齐, | ||
size_t | 偏移量 ) |
void * mi_heap_malloc_small | ( | mi_heap_t * | 堆, |
size_t | size ) |
void * mi_heap_mallocn | ( | mi_heap_t * | 堆, |
size_t | 计数, | ||
size_t | size ) |
在特定堆中分配 count 个元素。
mi_heap_t * mi_heap_new | ( | ) |
创建一个可用于分配的新堆。
void * mi_heap_realloc | ( | mi_heap_t * | 堆, |
void * | p, | ||
size_t | newsize ) |
void * mi_heap_realloc_aligned | ( | mi_heap_t * | 堆, |
void * | p, | ||
size_t | newsize, | ||
size_t | 对齐 ) |
void * mi_heap_realloc_aligned_at | ( | mi_heap_t * | 堆, |
void * | p, | ||
size_t | newsize, | ||
size_t | 对齐, | ||
size_t | 偏移量 ) |
void * mi_heap_reallocf | ( | mi_heap_t * | 堆, |
void * | p, | ||
size_t | newsize ) |
void * mi_heap_reallocn | ( | mi_heap_t * | 堆, |
void * | p, | ||
size_t | 计数, | ||
size_t | size ) |
char * mi_heap_realpath | ( | mi_heap_t * | 堆, |
const char * | fname, | ||
char * | resolved_name ) |
使用特定的 heap 解析文件路径名以分配结果。
char * mi_heap_strdup | ( | mi_heap_t * | 堆, |
const char * | s ) |
在特定堆中复制字符串。
char * mi_heap_strndup | ( | mi_heap_t * | 堆, |
const char * | s, | ||
size_t | n ) |
在特定堆中复制长度至多为 n 的字符串。
void * mi_heap_zalloc | ( | mi_heap_t * | 堆, |
size_t | size ) |
在特定堆中分配零初始化的内存。
void * mi_heap_zalloc_aligned | ( | mi_heap_t * | 堆, |
size_t | size, | ||
size_t | 对齐 ) |
void * mi_heap_zalloc_aligned_at | ( | mi_heap_t * | 堆, |
size_t | size, | ||
size_t | 对齐, | ||
size_t | 偏移量 ) |